at_shiita.ishigaki
2022年1月12日 13時29分
共通のフィールドで文字を連結するにはjoinコマンドを使用します。
以下の例では、100・200・300・400がフィールドとなります。
[armadillo ~]# cat << EOF > a.txt 100 hoge 200 fuga 300 piyo EOF [armadillo ~]# cat << EOF > b.txt 100 foo 200 bar 400 baz EOF [armadillo ~]# join a.txt b.txt 100 hoge foo 200 fuga bar
joinコマンドを使用することで、a.txtとb.txtで共通のフィールドである、100と200のフィールドが連結されます。
連結していない行を表示するには、-vオプションを使用します。
-vオプションに続いてファイル番号を指定することで、そのファイル番号で連結していない行を表示します。
※今回の例では、ファイル番号1がa.txt、ファイル番号2がb.txtとなります。
[armadillo ~]# join -v 1 a.txt b.txt 300 piyo [armadillo ~]# join -v 1 -v 2 a.txt b.txt 300 piyo 400 baz
デフォルトでは空白がフィールドの区切り文字ですが、-tオプションで区切り文字を変更できます。
フィールドの区切り文字をカンマ区切りにすることで、csvファイルを連結することができます。
[armadillo ~]# cat a.txt | tr ' ' ',' > c.txt [armadillo ~]# cat b.txt | tr ' ' ',' > d.txt [armadillo ~]# join -t , c.txt d.txt 100,hoge,foo 200,fuga,bar