3.3 文本文件的交集与差集
命令:comm
用途:选择两个已排序文件的行。
注意点:1.比较的内容是每一行;2.文件是按行排序好的
1.如何对文本的行进行排序
sort A.txt -o A.txt //对A.txt内的行进行排序并把结果保存到A.txt中
yang@Ubuntu:~$ cat A.txt apple gold iron orange silver steel iron
2.如何辨别是空行,空格,制表符TAB(空行和空格除了想到使用grep和正则表达式之外不知道如何区分)
辨别TAB,cat 带 -T参数制表符显示为^I
yang@Ubuntu:~$ cat -T A.txt apple gold iron orange ^I silver steel iron
3.排序结果(空白<空格<TAB)
4.比较A.txt 和B.txt
yang@Ubuntu:~$ cat B.txt -T
^I
carrot
cookies
gold
orange
yang@Ubuntu:~$ comm A.txt B.txt
apple
carrot
cookies
gold
iron
iron
orange
silver
steel
yang@Ubuntu:~$ comm A.txt B.txt | cat -T ^I^I^I apple ^Icarrot ^Icookies ^I^Igold iron iron ^I^Iorange silver steel
其中第一列为A对B的差集,第二列为B对A的差集,第三列为A和B交集
其中各列以制表符作为定界符,所以第三行前两个^I为定界符,第三个为A和B都含有的行
5.只显示某一列或者两列 选项-1:删除第一列 选项-2:删除第二列 选项-3:删除第三列
yang@Ubuntu:~$ comm A.txt B.txt -1 -2 gold orange
yang@Ubuntu:~$ comm A.txt B.txt -1 carrot cookies gold orange
6.去掉上面首行的制表符(sed命令待学习)
yang@Ubuntu:~$ comm A.txt B.txt -1 | sed 's/^\t//' carrot cookies gold orange