根据另外两个文本文件从大型文本文件中删除一些 ID

根据另外两个文本文件从大型文本文件中删除一些 ID

我有一个大文本文件(文件 A),如下所示:

ID1 ID2 0.2
ID3 ID6 0.4
ID4 ID2 0.6
ID5 ID8 0.8
ID7 ID14    0.4
ID3 ID9 0.6 
ID8 ID10 0.8

我还有另外两个文本文件(B 和 C),其中文件 B 如下所示:

ID1
ID2
ID3
ID4
ID5
ID6
ID7

文件 C 如下:

ID8
ID9
ID10
ID11
ID12
ID13
ID14

我想只保留文件 A 中前两列的相关内容同时属于文件 B 和文件 C 的行。例如,我只想要文件 A 中的这些行:

ID10 ID3    0.8
ID7 ID14    0.4
ID3 ID9 0.6

因为ID 10和ID3同时属于B和C两个文件,以此类推。您能否让我知道如何获得这样的输出?

非常感谢

答案1

只是文件中出现的字符串的文件grep,然后是文件中出现的字符串的结果。ABgrepC

$ ( grep -wF -f fileB | grep -wF -f fileC ) <fileA
ID5 ID8 0.8
ID7 ID14    0.4
ID3 ID9 0.6

使用的选项grep

  • -w只匹配整个单词(这是一个常用但非标准的选项)。我们使用此选项ID10在 grep for 时不匹配ID1
  • -F将模式解释为字符串,而不是正则表达式。
  • -f从单独的文件中读取要匹配的模式。

相关内容