如何在单独的文件中仅使用diff显示不同的行?
例如,文件编号1包含以下行:
1;john;125;3
1;tom;56;2
2;jack;10;5
文件编号2包含以下行:
1;john;125;3
1;tom;58;2
2;jack;10;5
如何在下面发生?
1;tom;58;2
答案 0 :(得分:33)
A.TXT:
1;john;125;3
1;tom;56;2
2;jack;10;5
b.txt:
1;john;125;3
1;tom;58;2
2;jack;10;5
使用comm:
comm -13 a.txt b.txt
1;tom;58;2
comm
的命令行选项非常简单:
-1抑制第1列(FILE1特有的行)
-2抑制第2列(FILE2独有的行)
-3抑制第3列(两个文件中出现的行)
答案 1 :(得分:10)
假设您只想保留文件2的唯一行,您可以这样做:
comm -13 file1 file2
请注意,comm
命令要求这两个文件按排序顺序排列。
答案 2 :(得分:4)
使用组格式说明符可以禁止打印未更改的行,并仅打印更改的行以进行更改
diff --changed-group-format="%>" --unchanged-group-format="" file1 file2
答案 3 :(得分:1)
以下是我认为比diff
更好的简单解决方案:
sort file1 file2 | uniq -u
sort file1 file2
连接两个文件并对其进行排序uniq -u
打印唯一行(不重复)。它要求输入要预先排序。