我有一个名称和ID列表(50个条目)
cat input.txt
name ID
Mike 2000
Mike 20003
Mike 20002
并且有一个巨大的压缩文件(13GB)
zcat clients.gz
name ID comment
Mike 2000 foo
Mike 20002 bar
Josh 2000 cake
Josh 20002 _
我的预期输出是
NR name ID comment
1 Mike 2000 foo
3 Mike 20002 bar
每个$1"\t"$2
client.gz是一个唯一的标识符。可能有一些条目input.txt
可能从中丢失clients.gz
。因此,我想将NR列添加到我的输出中以找出丢失的内容。我想使用zgrep。awk需要很长时间(因为我不得不zcat
解压缩假定的压缩文件?)
我知道那zgrep 'Mike\t2000'
行不通。我可以使用awk FNR修复的NR问题。
到目前为止,我有:
awk -v q="'"
'
NR > 1 {
print "zcat clients.gz | zgrep -w $" q$0q
}' input.txt |
bash > subset.txt
$ cat tst.awk
BEGIN { FS=OFS="\t" }
{ key = $1 FS $2 }
NR == FNR { map[key] = (NR>1 ? NR-1 : "NR"); next }
key in map { print map[key], $0 }
$ zcat clients.gz | awk -f tst.awk input.txt -
NR name ID comment
1 Mike 2000 foo
3 Mike 20002 bar
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句