建设外贸网站的细节,小公司,哪家做网站的好,装饰网站建设软件下载comm命令可用于两个文件之间的比较。它有很多不错的选项可用来调整输出#xff0c;以便我们执行交集、求差#xff08;difference#xff09;以及差集操作。 交集#xff1a;打印出两个文件所共有的行。 求差#xff1a;打印出指定文件所包含的且互不相同的那些行。…comm命令可用于两个文件之间的比较。它有很多不错的选项可用来调整输出以便我们执行交集、求差difference以及差集操作。 交集打印出两个文件所共有的行。 求差打印出指定文件所包含的且互不相同的那些行。 差集打印出包含在文件a中但不包含在其他指定文件中的那些行。 假设现在有两个文件a和b内容分别是a(1,2,3)b(3,4,5)。那么对这两个文件进行操作的结果如下。交集3。求差1,2,4,5。差集a1,2。 需要注意的是comm必须使用排过序的文件作为输入。请看看下面的例子 [roothost1 shell]# echo -e 1\n3\n8\n2 a.txt
[roothost1 shell]# cat a.txt
1
3
8
2
[roothost1 shell]# echo -e 1\n5\n7\n2 b.txt
[roothost1 shell]# cat b.txt
1
5
7
2
[roothost1 shell]# sort a.txt -o a.txt ; sort b.txt -o b.txt (1) 首先执行不带任何选项的comm [roothost1 shell]# comm a.txt b.txt 12
357
8 输出的第一列包含只在a.txt中出现的行a的差集第二列包含只在b.txt中出现的行b的差集第三列包含a.txt和b.txt中相同的行交集。各列以制表符\t作为定界符。 (2) 为了打印两个文件的交集我们需要删除第一列和第二列只打印出第三列 [roothost1 shell]# comm -1 -2 a.txt b.txt
1
2 (3) 打印出两个文件中不相同的行 [roothost1 shell]# comm -3 a.txt b.txt
357
8 在这次的输出中那些唯一出现的行使得列中出现了空白字段。所以这两列在同一行上不会同时都出现内容。为了提高输出结果的可用性需要删除空白字段将两列合并成一列 3578 (4) 要生成规范的输出得使用下面的命令 [roothost1 shell]# comm -3 a.txt b.txt | sed s/^\t//
3
5
7
8 (5) 通过删除不需要的列我们就可以分别得到a.txt和b.txt的差集。a.txt的差集$ comm a.txt b.txt -2 -3-2 -3 删除第二列和第三列。b.txt的差集$ comm a.txt b.txt -1 -3-1 -3 删除第一列和第三列。 工作原理 comm的命令行选项可以按照需求对输出进行格式化例如 -1 从输出中删除第一列 -2 从输出中删除第二列 -3 从输出中删除第三列。 在生成统一输出时sed命令通过管道获取comm的输出。它删除行首的 \t字符。sed中的s表示替换substitute。/^\t/ 匹配行前的 \t^是行首标记。//两个/操作符之间没有任何字符是用来替换行首的\t的字符串。如此一来就删除了所有行首的\t。 差集操作允许你比较两个文件打印出只在a.txt或b.txt中出现的行。当a.txt和b.txt作为comm命令的参数时输出中的第一列是a.txt相对于b.txt的差集第二列是b.txt相对于a.txt的差集。转载于:https://www.cnblogs.com/01-single/p/6950645.html