Linux 如何使用diff(bash)仅显示不同的行
如何在单独的文件中使用diff仅显示不同的行 例如,文件编号1包含以下行:Linux 如何使用diff(bash)仅显示不同的行,linux,bash,unix,diff,Linux,Bash,Unix,Diff,如何在单独的文件中使用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 a、 txt: b、 txt: 1;john;125;3 1;tom;58;2 2;jack;10;5 使用: comm的命令行选项非常简单: -1禁止显示第1列(文件1特有的行) -2抑制第2列(文件2特
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
a、 txt:
b、 txt:
1;john;125;3
1;tom;58;2
2;jack;10;5
使用:
comm
的命令行选项非常简单:
-1禁止显示第1列(文件1特有的行)
-2抑制第2列(文件2特有的行)
-3抑制第3列(两个文件中出现的行)
假设只保留文件2独有的行,可以执行以下操作:
comm -13 file1 file2
请注意,
comm
命令要求两个文件按顺序排序 使用组格式说明符,您可以禁止打印未更改的行,并仅打印更改行的更改行
diff--changed group format=“%%>”--unchanged group format=“”file1 file2
我认为这是一个比diff
更好的简单解决方案:
sort file1 file2 | uniq-u
连接两个文件并对其排序排序文件1文件2
打印唯一的行(不重复)。它要求对输入进行预排序uniq-u
uniq
,因此,如果一行在file1中出现多次,而在file2中仅出现一次,file1中的每一次额外出现都将被comm
列为差异(当然是…).对于1,应如何处理;汤姆;56;2
?第二个文件是否应始终具有优先级?如果第一个文件包含的行不在第二个文件中,该怎么办?这对于使用低估答案的字符串也非常有效!简单而优雅,处理排序问题,并使用命名无可挑剔的uniq实用程序
comm -13 a.txt b.txt
1;tom;58;2
comm -13 file1 file2