awk의 IF 조건에 대한 정규식

awk의 IF 조건에 대한 정규식

awk다음 스크립트 파일이 있습니다 . if문자열에 문자가 하나 이상 포함되어 있는지 확인하려면 명령문에 다른 조건을 추가 해야 합니다 . 현재 명세서 if에 조건을 추가하려면 어떻게 해야 합니까?

필수 정규식 조건:[[ "$1" =~ [A-Za-z] ]]

BEGIN { FS = ";"; counter=0}

{ 
 if ((length($1) != 10 && length($1) != 12))
   { 
    counter++
    print counter, $1;
    if ($counter -gt 2){
        print "Invalid input file";
        exit;
    }    
   }
}

게시한 것과 동일한 조건을 사용하면 오류가 발생합니다. 조건을 추가하는 방법은 무엇입니까?

답변1

실제로 정규식을 추가하는 방법을 보여주지 않으므로 동일한 형식을 사용하고 있는 것 같습니다 =~ [A-Za-z]. 그건 작동하지 않습니다. 각 언어에는 고유한 정규식 일치 구문이 있습니다. 에서는 awk형식이 $target ~ /$regex/이므로 입니다 $1 ~ /[A-Za-z]/.

BEGIN { FS = ";"; counter=0}

{ 
 if (length($1) != 10 && length($1) != 12 && $1 ~ /[A-Za-z]/)
   { 
    counter++
    print counter, $1;
    if (counter > 2){
        print "Invalid input file";
        exit;
    }    
   }
}

또한 에서는 awk기호 $를 사용하여 표시합니다.필드, 아니요변하기 쉬운. 따라서 $counter로 평가 될 필드 번호입니다 counter. 그렇다면 두 번째 필드의 값 counter2됩니다 . $counter그리고 이것은 -gt이상한 일이 아닙니다. 그냥 사용하세요 >.

관련 정보