awk比较 - GunZip文件:

时间:2014-04-30 13:41:13

标签: awk

如果输入文件采用*gz格式比较两个文件,想知道如何更改以下命令

此命令正在运行

awk -F, 'FNR==NR {a[$1]=$0;next} {if (!($1 in a)) print $0,a[$1] ; }' OFS=, f22.txt f11.txt>Output_f33.txt

此命令不起作用

awk -F, 'FNR==NR {a[$1]=$0;next} {if (!($1 in a)) print $0,a[$1] ; }' OFS=, f22.txt.gz f11.txt.gz>Output_f33.txt

1 个答案:

答案 0 :(得分:1)

awk适用于基于文本的数据文件。 gz个文件是压缩文件,这意味着它们不再是awk可以解析的格式。您必须解压缩文件并将其传递给awk。您可以这样说:

awk -F, 'FNR==NR {a[$1]=$0;next} {if (!($1 in a)) print $0,a[$1] ; }' OFS=, <(gzip -dc f22.txt.gz) <(gzip -dc f11.txt.gz) > Output_f33.txt

您还可以修改您要编写的命令(细分以提高可读性):

awk '
BEGIN {FS = OFS = ","}
FNR==NR {a[$1] = $0; next}
!($1 in a){print $0, a[$1]}' <(gzip -dc f22.txt.gz) <(gzip -dc f11.txt.gz) > Output_f33.txt