根据给定的ID列表删除给定文本文件中的所有行

时间:2013-07-19 16:54:07

标签: bash awk grep

我有一个像这样的ID列表:

11002
10995
48981

和制表符分隔的文件如下:

11002   Bacteria;
10995   Metazoa

我正在尝试删除包含ID列表文件中的一个ID的制表符分隔文件中的所有行。由于某种原因,以下操作无效,只返回相同的完整制表符分隔文件,而不删除任何行:

 grep -v -f ID_file.txt tabdelimited_file.txt > New_tabdelimited_file.txt

我还尝试了许多其他与grep的组合,但目前我在这里画空白。

知道为什么会失败吗?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

由于您使用awk对此进行了标记,因此以下是一种方法:

awk 'BEGIN{FS=OFS="\t"}NR==FNR{ids[$1]++;next}!($1 in ids)' idFile tabFile > new_tabFile

BTW你的grep命令是正确的。只需仔细检查您的文件是否未针对Windows进行格式化。

相关问题