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
原文地址:https://www.cnblogs.com/yangqionggo/p/2867669.html