我有文件a
,b
并且我想输出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'
答案1
与GNU扩散剂包的diff
这将仅输出文件 b 中已修改或新插入的行:
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b
答案2
您必须再添加一个选项:
grep -vf file1 file2
答案3
awk 'FNR==NR{old[$0];next};!($0 in old)' old.txt new.txt