【发布时间】:2017-09-19 12:38:19
【问题描述】:
我知道之前已经回答了一些与此类似的问题,但我还没有找到我想要的确切答案(并且尝试了所提议的解决方案的变体)。希望这是一个简单的问题。
我有一个制表符分隔的文件 (file.txt),它有 10 列和大约 50 万行,简化后如下所示:
ID Col1 Col2 Col3
a 4 2 8
b 5 6 1
c 8 4 1
d 3 5 9
e 8 5 2
我想删除第一列 (ID) 中出现“b”和“d”的所有行。我想要的输出是:
ID Col1 Col2 Col3
a 4 2 8
c 8 4 1
e 8 5 2
在我的输出文件中维护 ID 的顺序很重要。
实际上,我想删除大约 100,000 行。因此,我有一个参考文件 (referencefile.txt),其中列出了我想从 file.txt 中删除的所有 ID。在本例中,参考文件将简单地在连续的行中包含“b”和“d”。
我目前正在使用 grep,虽然它可以工作,但它被证明非常缓慢。
grep -v -f referencefile.txt file.txt
有没有办法使用 awk 或 sed(或其他任何东西)来加速这个过程?
非常感谢。
AB
【问题讨论】: