Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

bash を使った集合演算 (set operation)

$
0
0

 pinfoコマンド素敵だなぁと思いつつ、info coreutilsを読んだ時に知った話。つまり、これ coreutils のマニュアルの 8.3.6の話。

集合演算

集合要素
Aseq 1 3 (1 2 3)
Bseq 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アドレス一覧から取得する

Viewing all articles
Browse latest Browse all 2722

Trending Articles