找到4个文件的交集

时间:2016-10-24 14:29:52

标签: macos ubuntu terminal string-search

如何找到4个文件的交集?

我使用grep -Fx -f 1.txt 2.txt 3.txt 4.txt,但它似乎只适用于2个文件。同样,comm -12 1.txt 2.txt无法扩展为4个文件,需要对数据进行排序。我的数据没有排序,实际上它不应该排序。我在Mac上。

输入:

1.txt
.css
.haha
.hehe
2.txt
.ajkad
.shdja
.hehe

3.txt
.css1
.aaaaa
.hehe

4.txt
.qwqw
.kkkmsm
.hehe

输出:.hehe

我首先在第一个和第二个上使用grep存储在12.txt中,而不是第三个和第四个存储在34.txt中,然后在12.txt和34.txt上再次使用grep。但必须有更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:1)

你可以链接greps:

grep -f 1.txt 2.txt \
| grep -f- 3.txt \
| grep -f- 4.txt

-f-表示使用来自管道的输入,而不是真实文件。

答案 1 :(得分:1)

您可以找到两者之间的交集:

$ grep -Fx -f f1.txt f2.txt
.hehe

然后将其用作其他两个的输入:

$ grep -f <(grep -Fx -f f1.txt f2.txt) f3.txt f4.txt
f3.txt:.hehe
f4.txt:.hehe

或者,如果你只想要一个单词:

$ grep -f <( grep -f <(grep -Fx -f f1.txt f2.txt) f3.txt) f4.txt
.hehe