Diff,仅显示来自右侧文件的修改行

Rob*_*ino 32 diff sed awk shell-script

我有文件ab并且我想输出b更改后的行,因为它是从a. 只是修改后的行,没有周围的上下文,没有差异偏移标记。

我如何使用 shell 脚本来做到这一点?(没有 Python/Perl/PHP/...)

sed 和 awk 是可接受的解决方案。

现在,我正在做的是 diff -y 与 --suppress-common-lines 和 sed 使用正则表达式反向引用来获取空格后的正确部分。一定会有更好的办法?

使用 perl(这是被禁止的),我会做这样的事情:

diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'
Run Code Online (Sandbox Code Playgroud)

man*_*ork 46

使用 GNU diffutils包,diff这将只输出文件 b 中被修改或新插入的行:

diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b
Run Code Online (Sandbox Code Playgroud)

  • 惊人的。可惜信息被埋在 Texinfo 中,我正在阅读的手册页中没有提供任何提示。 (6认同)

小智 6

您必须再添加一个选项:

grep -vf file1 file2
Run Code Online (Sandbox Code Playgroud)