[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
コマンドに渡しています。