找到4个文件的交集
find the intersection of 4 files
如何找到 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
我先在 12.txt 中存储的 1 和 2 上使用了 grep,然后在 34.txt 中存储的 3 和 4 上使用了 grep,然后在 12.txt 和 34.txt 上再次使用了 grep .但是必须有更好的方法来做到这一点。
您可以链接 greps:
grep -f 1.txt 2.txt \
| grep -f- 3.txt \
| grep -f- 4.txt
-f-
表示使用来自管道的输入,而不是真实文件。
你可以找到两者的交集:
$ 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
如何找到 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
我先在 12.txt 中存储的 1 和 2 上使用了 grep,然后在 34.txt 中存储的 3 和 4 上使用了 grep,然后在 12.txt 和 34.txt 上再次使用了 grep .但是必须有更好的方法来做到这一点。
您可以链接 greps:
grep -f 1.txt 2.txt \
| grep -f- 3.txt \
| grep -f- 4.txt
-f-
表示使用来自管道的输入,而不是真实文件。
你可以找到两者的交集:
$ 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