原!linux comm命令文件 比较 输出交集,差集。

文件内容大致如下:

112805|300011222483|OL海12卓|47397c33e36cdbed26637c50dd305973|2019-08-06 10:50:13|登B录123|succ|
221805|3002228346|12车安S卓|ce125ad05675ac2c73de325d4d573707|2019-08-06 10:49:20|号A码校验(SDK)123|succ|

........

问题:线上话单文件第三方传来的文件1已经计费过,但是由于故障,文件1内容不全,后面给了全量文件2,故要排除文件2中 与 文件1共有内容行,即排除文件1中已经计费过的所有内容行。

现有文件:1.txt  2.txt ,现在要获得只在2.txt中有的内容行。

利用comm命令

comm -3 file1 file2
这个方法看起来最简单。命令comm的功能就是,逐行比较两个排好序的文件,默认输出有三列:只在file1中有的行、只在file2中有的行、在file1和file2中共有的行。

有参数-1 -2 -3,分别来抑制输出对应的列。例如在我们的方法二中,实用-3参数,不输出file1和file2中共有的部分。即能达到我们本文的目的。

扫描二维码关注公众号,回复: 7108476 查看本文章

因此先进行排序:

sort 1.txt -o 1_sort.txt

sort 2.txt -o 2_sort.txt

再利用comm命令输出只在file2中有的行(差集):

comm -1 -3 1_sort.txt  2_sort.txt > only_2_have_sort.txt

猜你喜欢

转载自www.cnblogs.com/wuyun-blog/p/11416908.html