首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于查找两个文件中共有行的Shell命令

用于查找两个文件中共有行的Shell命令
EN

Stack Overflow用户
提问于 2008-12-17 06:36:55
回答 6查看 176.5K关注 0票数 210

我确信我曾经发现过一个shell命令,它可以打印两个或更多文件中的公共行。它叫什么名字?

它比diff简单得多。

EN

回答 6

Stack Overflow用户

发布于 2014-10-12 05:50:39

为了补充Perl单行程序,下面是它的awk等价物:

awk 'NR==FNR{arr[$0];next} $0 in arr' file1 file2

这会将所有行从file1读取到数组arr[]中,然后检查file2中的每一行是否已经存在于数组中(即file1)。找到的行将按它们在file2中出现的顺序打印。请注意,比较in arr使用file2中的整行作为数组的索引,因此它只报告整行的精确匹配。

票数 36
EN

Stack Overflow用户

发布于 2015-01-21 01:21:17

grep -v -f 1.txt 2.txt > 3.txt

给出了两个文件( 2.txt和1.txt中没有的文件)的区别,您可以很容易地执行

grep -f 1.txt 2.txt > 3.txt

收集所有的公共线路,这将为您的问题提供一个简单的解决方案。如果你已经对文件进行了排序,那么你还是应该使用comm。致以问候!

票数 20
EN

Stack Overflow用户

发布于 2017-07-21 19:14:15

如果这两个文件尚未排序,您可以使用:

comm -12 <(sort a.txt) <(sort b.txt)

并且它可以正常工作,避免在执行comm -12 a.txt b.txt时出现错误消息comm: file 2 is not in sorted order

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/373810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档