at_shiita.ishigaki
2021年10月15日 8時47分
ソートされているファイルの各行を比較するにはcommコマンドを使用します。
※ここでは例として、a.txtとb.txtを比較します。
[armadillo ~]# cat a.txt abc defg hij [armadillo ~]# cat b.txt abc defg hijk lmn [armadillo ~]# comm a.txt b.txt abc defg hij hijk lmn
commコマンドの出力は、1列目に1つ目のファイルのみに含まれている行、2列目に2つ目のファイルのみに含まれている行、3列目にどちらのファイルにも含まれている行となります。
出力される区切り文字を変更するには--output-delimiterオプションを使用します。
※ここでは例として、区切り文字を","にします。
[armadillo ~]# comm a.txt b.txt --output-delimiter=, ,,abc ,,defg hij ,hijk ,lmn
以下のようにファイルがソートされていない場合、エラーが表示されることがあります。
※ここではb.txtの1行目を4行目に移動させています。
[armadillo ~]# cat b.txt defg hijk lmn abc [armadillo ~]# comm a.txt b.txt abc defg hij hijk lmn comm: file 2 is not in sorted order abc
この場合、事前にソートすることでエラーになりません。
[armadillo ~]# comm a.txt <(sort b.txt) abc defg hij hijk lmn