【发布时间】:2020-01-26 04:14:23
【问题描述】:
我有一个姓名和 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
clients.gz 中的每个 $1"\t"$2 都是唯一标识符。 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
【问题讨论】:
-
一直在考虑这个问题。我将 zgrep 与 awk 混合并运行一个数组。虽然不确定是否有更简单的方法?我不知道该怎么做
zgrep '$Mike\t2002' -
如果您对此感兴趣,打印出客户文件中不存在的条目不是更有意义吗?
-
@Shawn 评论栏是我感兴趣的,还有一些我简化了。