You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选出在四个指定输入文件中均存在的行?

找出所有四个文件中共同存在的行

要提取在file1、file2、file3、file4这四个文件里都出现过的行,你可以基于已经尝试的命令做进一步过滤,具体方案如下:

方法一:基于统计计数过滤(最简洁高效)

你已经通过cat file* | sort | uniq -c得到了每行的出现次数——因为我们有4个输入文件,且每个文件内的行没有重复(从你的示例内容可确认),所以出现次数等于4的行,就是在所有文件中都存在的行。

直接执行完整命令:

cat file* | sort | uniq -c | awk '$1 == 4 {print $2}'

命令拆解:

  • cat file*:合并所有以file开头的文件内容
  • sort:对合并后的内容排序,让相同的行集中在一起
  • uniq -c:统计每行出现的次数,输出格式为「次数 行内容」
  • awk '$1 == 4 {print $2}':筛选出次数为4的行,只输出对应的行内容

执行后会得到你预期的结果:

/dev/dev_sg2
/dev/dev_sg3

方法二:用grep逐文件匹配(适合文件数量少的场景)

如果你不想依赖统计计数,也可以用grep逐层筛选交集:

grep -xFf file1 file2 | grep -xFf - file3 | grep -xFf - file4

命令拆解:

  • -x:强制匹配整行,避免部分内容匹配的误判
  • -F:把搜索内容当作固定字符串(而非正则表达式)
  • -f:从指定文件读取需要匹配的模式
  • 管道依次筛选:先找出file1和file2的共同行,再和file3找交集,最后和file4找交集

这个方法也能得到相同结果,但当文件数量增多时,写法会比较繁琐,不如第一种方法简洁。


内容的提问来源于stack exchange,提问作者asokan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:56:05