我有一个大文本文件(文件 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
,然后是文件中出现的字符串的结果。A
B
grep
C
$ ( 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
从单独的文件中读取要匹配的模式。