awk csv는 잘못된 행을 stderr로 출력하는 것을 처리합니다.

awk csv는 잘못된 행을 stderr로 출력하는 것을 처리합니다.

폴더에서 여러 CSV 파일을 가져와 gzip 파일에 넣고 파일 이름에서 필드를 추출하는 스크립트가 있습니다.

awk -F";" 'BEGIN { OFS = FS }
FNR == 1 { match(FILENAME, "([0-9]{8})", a); JOBID = a[1]; print $0, JOBID }
FNR > 1 { print $0, JOBID }' Event_*txt | gzip > agzipfile.gz

내 목표는 NF행에 5개의 필드가 포함되어 있는지 확인하고 그렇지 않은 경우 해당 행을 stderr 또는 다른 파일로 인쇄하는 것입니다.
그러나 나는 이것을 수행하는 올바른 방법을 이해하거나 찾지 못합니다.
가능합니까? 달성하는 방법?
PS: 저는 GNU를 사용하고 있습니다awk

답변1

AWK 내에서 리디렉션할 수 있습니다.

NF != 5 { print > "/dev/stderr"; next }

/dev/stderrGNU AWK가 내부적으로 처리하는 특수 파일 이름 중 하나입니다. (다른 AWK 구현은 가능하면 작성합니다 /dev/stderr. 많은 시스템에서 연결은 어쨌든 표준 오류에 연결되므로 결과는 동일합니다.)

바라보다리디렉션에 관한 매뉴얼의 이 섹션, 그리고특수 파일 설명자에 관한 것입니다..

관련 정보