출력 파일에서 입력 파일의 형식을 지정하는 경우 awk
을 사용하고 있습니다. 변수를 채울 패턴이 여러 개 있습니다 (예 : "some pattern"). 이 변수는 END
블록에 필수 형식으로 인쇄됩니다. 입력 파일의 모양 순서는 보장되지 않지만 출력 파일의 순서는 항상 동일해야하기 때문에 출력을 완료해야합니다.awk : END 블록에서 'exit'catch
BEGIN {
FS = "=|,"
}
/some pattern/ {
if ($1 == 8) {
var = $1
} else {
# Incorrect field value
exit 1
}
}
END {
# Output the variables
print var
}
내 문제는 패턴에 exit
문입니다. 오류가 있고이 명령을 호출하면 출력이 없거나 오류 메시지가 많아야합니다. 그러나 gawk 매뉴얼 (here)에 따르면, exit
명령이 패턴 블록에서 호출되면 END
블록이 최소한 실행됩니다.
if (!exit_invoked) {
print var
}
또는 END
블록에 출력을 인쇄 피하기 위해 다른 방법 : 같은 exit
를 잡을 수있는 방법이 있습니까?
스테판
편집 :는 shellter의 솔루션을 사용합니다.
감사합니다.이 간단한 해결책에 대해 생각하지 마십시오.) 나는 이것을 'exit_invoked' 세트를 잊지 않는 함수로 묶을 것입니다. Stefan – Stefan
@ 스탄 : 좋은 생각. 재생중인 변수가 있음을 상기시켜주기 위해 BEGIN 블록에 'exit_invoked = 0'을 설정하는 것이 좋습니다. 어떤 사람들은 불필요하고 불필요하다고 불평 할 것입니다. 나는 그것을 스스로하지는 않겠지 만, 좋은 자기 기록 기술자이다. YRMV. 행운을 빕니다. – shellter
필자가 직접 awk 프로그래밍을 작성하지 않기 때문에이 작업을 수행 할 것입니다. 감사. – Stefan