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
. 그렇다면 두 번째 필드의 값 counter
이 2
됩니다 . $counter
그리고 이것은 -gt
이상한 일이 아닙니다. 그냥 사용하세요 >
.