标题:[实践OK]Linux文件比较操作comm命令实现文本文件的交集、差集与求差,一般求差集的多一些。 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Fri, 23 Jun 2017 15:34:05 +0000 作者:jackxiang 地址:http://jackxiang.com/post/9234/ 内容: 基本上有两个方法,一个是comm命令,一个是grep命令。分别介绍如下: comm命令 , Compare sorted files FILE1 and FILE2 line by line. With no options, produce three-column output. Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files. 要注意两个文件必须是排序和唯一(sorted and unique)的,默认输出为三列,第一列为是A-B,第二列B-A,第三列为A交B。这个哥们写得好,尽管我不懂linux文件流的用法,但是大致看出来了,我用了三个步骤,而用一行就搞定了,简单可用:http://m.blog.csdn.net/article/details?id=6579320 求交集的办法: comm <(sort a.txt|uniq ) <(sort b.txt|uniq ) -12 #注意: <( 这个中间没有穿格。左边文件有的在右边文件也有的。 求差集的办法:comm <(sort all |uniq ) <(sort yw_all |uniq ) -23 #左边文件比右边文件多,求出右边文件缺少的。 文件行数少最直观快捷的diff办法: vimdiff <(sort a.txt|uniq) <(sort b.txt|uniq) /proc/15750/fd/63 [只读] /proc/15750/fd/62 [只读] —————————————————————————————— 一般求差集的多一些: 求差 comm a.txt b.txt -3 | sed 's/^\t//' 差集 comm a.txt b.txt -2 -3 实践如下: sort getosok.txt >> getosoksort.txt sort r11.txt >> r11sort.txt comm r11sort.txt getosoksort.txt -2 -3 再次实践,注意这两个文件都要去重,否则不太好比较,-2 -3显示左边文件有的右边没有的: sort mysqlsort.txt|uniq //sort结合uniq命令去重复行找出重复次数大于1的行参考:http://justwinit.cn/post/3671/ sort 主机层面能ssh连接的.txt |uniq >> 主机层面能ssh连接的排序过的去过重的.txt sort 数据库应用开发现在的.txt |uniq >> 数据库 应用开发现在的排序过的去过重的.txt comm 数据库应用开发现在的排序过的去过重的.txt 主机层能ssh连接的排序过的去过重的.txt -2 -3 10.71.11.4* //这个是列出左边有,右边文件没有的内容,也就是 “数据库应用开发现在的排序过的且去重的.txt”里有,而右边这个“主机层面能ssh连接的排序过的.txt” 没有。 comm 主机层面能ssh连接的排序过的去过重的.txt 数据库应用开发现在的排序过的 去过重的.txt -2 -3 10.70.*.42 10.70.*.53 10.70.*.1 10.70.*.2 10.71.*.29 注意: 1. comm命令要求输入文件的内容必须是排序且唯一的 2. comm -12 表示取消第一列和第二列的输出,即只输出第三列。[/warning] 主机层面能ssh连接的排序过的有,而右边没有。 http://www.ttlsa.com/linux/linux-file-comparison-operations-text-file-of-the-intersection-difference-sets-and-difference/ Generated by Jackxiang's Bo-blog 2.1.1 Release