差异统一输出;抑制@@行?

差异统一输出;抑制@@行?

使用 diff 时,有没有办法隐藏输出中的前两行(列出文件名和时间)和所有以 @@ 开头的行?我想要的只是显示要删除的内容和要添加的内容的行。

这是我当前的命令:

diff file1 file2 -U 0 > output.txt

使用该命令在 output.txt 文件中得到的示例输出:

--- file1   2010-11-25 01:56:58.856462432 -0500
+++ file2   2010-11-25 01:57:20.100626348 -0500
@@ -145,2 +145 @@
-VI2
-US3
+VI4
@@ -168,2 +167,2 @@
-56VI
-56PR
+57VI
+57PR

[编辑]:无论谁添加了 comm 命令,它最终都是正确的。如果你回复,我会奖励你答案。

答案1

diff file1 file2 -U 0 | tail +3 | grep -v "^@@" > output.txt

此版本具有diff与您相同的命令,但删除了前两行tail(从第三行开始)并仅输出行不是以“@@”开头。

答案2

这最终成为了我选择的解决方案:

comm -1 -3 --nocheck-order 'path/file.csv' 'path/file2.csv' > 'path/added.txt'
comm -2 -3 --nocheck-order 'path/file.csv' 'path/file2.csv' > 'path/removed.txt'

相关内容