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