LINUX找出两个文件内容的相同与不同
comm命令
在我们的开发和运营中,特别是对业务进行监控的时候,我们常常需要写一些监控shell脚本,而这些脚本需要求两个文件的共同的记录列表或者只出现在第一个文件但不出现在第二个文件的记录列表的场景,此时,comm命令则是您解决此类问题的利器和助手。
功能说明:比较两个已排过序的文件。(使用sort排序)
comm [-123][–help][–version][第1个文件][第2个文件]
补充说明:这项指令会一列列地比较两个已排序文件的差异,并将其结果显示出来,如果没有指定任何参数,则会把结果分成3栏显示:第1栏仅是在第1个文件中出现过的记录,第2栏是仅在第2个文件中出现过的记录,第3栏则是在第1与第2个文件里都出现过的记录。若给予的文件名改为”-“,则comm指令会从标准输入设备读取数据。
参 数:
-1 不显示只在第1个文件里出现过的列。
-2 不显示只在第2个文件里出现过的列。
-3 不显示只在第1和第2个文件里出现过的列。
–help 在线帮助。
–version 显示版本信息。
例子
comm – 12 就只显示在两个文件中都存在的行;
comm – 23 只显示在第一个文件中出现而未在第二个文件中出现的行;
comm – 123 则什么也不显示。
例如:找出a.txt文件有而b.txt文件中没有的放在c.txt文件中
#!/bin/sh # author by tianmo # date 2011-11-21 20:33 #BEGIN cat a.txt | sort | uniq | sort > a_u.txt cat b.txt | sort | uniq | sort > b_u.txt comm -23 a_u.txt b_u.txt > c.txt # END
本文出自 蓝鹰博客,转载时请注明出处及相应链接。
本文永久链接: http://www.lanyingblog.com/blog/2088.html