使用 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'