给定 2 个文件,它们有相同的行数,是否可能得到一个 diff仅有的改变(c
),换句话说,没有添加(a
)和删除(d
)?
例如,这里有 2 个文件,每个文件有 10 行。
文件1.txt:
apple
apple
pear
grape
pear
grape
pear
pear
pear
apple
文件2.txt:
apple
apple
pear
pear
pear
pear
pear
pear
pear
apple
调用diff file1.txt file2.txt
会产生:
4d3
< grape
6c5,6
< grape
---
> pear
> pear
是否有可能得到如下结果:
4c4
< grape
---
> pear
6c6
< grape
---
> pear
答案1
尝试这个:
diff <(nl file1.txt) <(nl file2.txt) | awk '{$2=""; print}' | sed -e 's/^\([<>]\) /\1 /'
该nl
命令对行进行编号,这样就可以使用diff
逐行。该awk
命令选择输出中diff
除由 添加的行号之外的所有内容nl
。换句话说,它会删除行号。该命令会删除留下的sed
尴尬的额外空格。awk