[Shell command] 2 つのリスト比較して一致することを確認する
作成日: 2019年12月19日
comm コマンドと sort コマンドを組み合わせると、2 つのリストが一致していることを確かめることができます。下記の例では、a.txt と b.txt の内容を比較しています。
a.txt
5
10
15
20
25
b.txt
10
5
15
25
20
コマンド
comm -3 <(sort a.txt) <(sort b.txt)
commコマンドは、1 つ目のリストだけに存在している行、2 つ目のリストだけに存在している行、どちらのリストにも存在している行を 3 カラムに分けて表示します。オプションで指定している-3は、どちらのリストにも存在している行を表示しないようにします。つまり、リストの内容が一致している場合は、1 つ目のリストだけに存在している行、2 つ目のリストだけに存在している行のどちらも出力されませんので何も結果が表示されません。何も表示されないことを確かめることで、2 つのリストが一致していると判断をすることができます。commコマンドは、ソート済みのリストを比較することを期待しているので、予めsortコマンドでソートを行った結果をcommコマンドに渡しています。