POSIX 이식 가능한 파일 이름 문자 집합은 대문자 A~Z, 소문자 a~z, 소수점 숫자 0~9, 마침표, 밑줄 및 하이픈으로 구성됩니다. 필드가 이와 같지 않으면 오류를 생성하고 싶습니다. 필드가 "/"로 시작해야 한다는 것을 이미 확인할 수 있지만 지정된 파일 경로에서 잘못된 문자에 대한 오류를 보고하는 것은 어렵습니다. 내 코드:
{if ($6 !~ /[a-zA-Z0-9_\/.-]{0,100}$/) print NR ": ERROR The directory contains illegal characters" }
불법 문자를 찾아서 보고하는 것은 아닙니다. 입력: /Bin**/home 출력: 경고 잘못된 문자가 발견되었습니다("**" 때문에).
AWK 명령을 수정하고 싶습니다.
답변1
이건 어때?
awk '$6~/[^a-zA-Z0-9_\/.-]/{print NR ":Illegal Characters"}' filename