3.3 文本文件的交集与差集

2019-03-19  本文已影响0人  拙言_Coder

《Linux Shell 脚本攻略(第 2 版)》读书笔记

comm 命令可用于两个文件之间的比较。可执行如下操作

注意comm必须使用排过序的文件作为输入。

现有 A.txt、B.txt 两个文件

$ sort A.txt -o A.txt ; sort B.txt -o B.txt # 排序
$ cat A.txt
apple
gold
iron
orange
silver
steel
$ cat B.txt
carrot
cookies
gold
orange

执行不带任何选项的 comm 命令

$ comm A.txt B.txt
apple
        carrot
        cookies
                gold
iron
                orange
silver
steel

打印两个文件的交集

$ comm -1 -2 A.txt B.txt
gold
orange

打印两个文件中不相同的行(求差)

$ comm -3 A.txt B.txt
apple
        carrot
        cookies
iron
silver
steel

# 生成规范的输出
$ comm -3 A.txt B.txt | sed 's/^\t//'
apple
carrot
cookies
iron
silver
steel

# OS X 用下面这个命令
$ comm -3 A.txt B.txt | tr "\t" "\0"

sed 's/^\t//':sed 是一个“非交互式的”面向字符流的编辑器。

差集

$ comm -2 -3 A.txt B.txt
# 删除第二列和第三列
$ comm -1 -3 A.txt B.txt
# 删除第一列和第三列
上一篇 下一篇

猜你喜欢

热点阅读