我正在尝试查看我正在使用的格式化程序的效果。许多行都会有缩进更改,而少数行会有其他更改,例如左大括号和右大括号之间的换行符。我想忽略对缩进的所有更改,同时保留其他空白更改。
我想出的最佳解决方案就是用
sed
去除前导空白,然后将其输入 diff
:
diff <(sed 's/^\s*//' inputfile) <(sed 's/^\s*//' formattedfile)
但这也有一个缺点,就是为了显示差异而去掉缩进。
我有办法使用
diff
、git diff
甚至其他我可以下载的工具来完成此操作吗?
GNU diff 有
-Z
来忽略 尾随 空格。
我们可以滥用这个:
s2e()(sed -E 's/;/;</g; s/^([ \t]*)(.*)/\2;>\1/')
e2s()(sed -E 's/^([<>] )(.*);>([ \t]*)$/\1\3\2/;s/;</;/g')
diff -Z <(s2e<file1) <(s2e<file2) | e2s
对于
-u
:
e2s_u()(sed -E 's/^([ +-])(.*);>([ \t]*)$/\1\3\2/;s/;</;/g')
diff -Zu <(s2e<file1) <(s2e<file2) | e2s_u
基本上:
;
);<
);>
)