pinfo
コマンド素敵だなぁと思いつつ、info coreutils
を読んだ時に知った話。つまり、これ coreutils のマニュアルの 8.3.6 の話。
集合演算
集合 | 要素 |
---|---|
A |
seq 1 3 (1 2 3) |
B |
seq 3 5 (3 4 5) |
和集合
-u
オプションの有無で重複の有無を調整できる。
$ sort -u -n <(seq 1 3) <(seq 3 5)
1
2
3
4
5
積集合
要素の重複ありで和集合を取った後で、重複がある行だけ出力する。
$ sort -n <(seq 1 3) <(seq 3 5) | uniq -d
3
A に含まれない B の要素
予め A の要素を2回出現させることで、B だけの要素が1回しか出現しないようにしている。
$ sort -n <(seq 1 3) <(seq 1 3) <(seq 3 5) | uniq -u
4
5
集合Aが集合Bの要素を全て含有する場合に限り、差集合 (A - B) として定義できる(はず)。
集合の XOR
重複する要素は2回出現するので、それを取り除いて表示しているだけ。
$ sort -n <(seq 1 3) <(seq 3 5) | uniq -u
1
2
4
5
これが何の役に立つのか?
分からない。そもそも趣味で勉強した時に偶々知っただけの話なので。
一応、業務では以下の用途で使ったことがある。
- 未使用のIPアドレス一覧を、IPアドレス一覧から取得する