我有一个脚本,它从一个文件夹中获取多个 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:我正在使用 GNUawk
您可以在 AWK 中重定向:
/dev/stderr
是 GNU AWK 内部处理的特殊文件名之一。(如果可能的话,其他 AWK 实现将写入/dev/stderr
;在许多连接到标准错误的系统中,结果是相同的。)请参阅手册中有关重定向的这一部分,以及有关特殊文件描述符的这一部分。