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

如何使用Bash高效提取文件A与文件B之间的新增内容

高效提取文件B相对文件A的新增内容(Bash工具)

我之前也碰到过类似的问题,其实是没掌握这些命令的正确打开方式!下面给你几个靠谱的方法,亲测好用:

方法1:使用comm命令(需先排序)

comm命令的前提是两个文件必须是排序好的,这可能就是你之前没得到正确结果的原因!它会对比两个有序文件,输出三列:仅在A的行、仅在B的行、两者共有的行。我们只需要仅在B的内容,用-13参数屏蔽前两列:

comm -13 <(sort A) <(sort B)

针对你的示例,执行后会输出4。

方法2:使用diff命令结合过滤

diff的输出里,以>开头的行就是文件B独有的内容,我们可以用grep和sed过滤掉前缀:

diff A B | grep '^>' | sed 's/^> //'

这个方法不需要预先排序,直接就能提取B的新增内容,你的示例里同样会输出4。

方法3:使用grep反向匹配

用grep的反向匹配功能,直接找出B中不在A里的行,参数解释:

  • -v:反向匹配(输出不匹配的行)
  • -x:整行匹配(避免部分匹配的问题)
  • -F:将匹配模式当作固定字符串(不用正则)
  • -f:从文件A读取匹配模式

命令如下:

grep -vxFf A B

这个方法简单直接,你的示例执行后结果就是4。

方法4:使用awk脚本

awk的处理逻辑很灵活,先把文件A的所有行存入数组,然后遍历文件B,输出不在数组里的行:

awk 'NR==FNR{a[$0];next}!($0 in a)' A B

这里NR==FNR是awk的常用技巧,用来处理第一个文件(A),之后处理第二个文件(B)时,判断每行是否在数组a中,不在就输出。你的示例里同样会得到4。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:42:40