2つのファイルの最初の列値と3番目の列値の比較[閉じる]

2つのファイルの最初の列値と3番目の列値の比較[閉じる]

私はUbuntu 18を使用しており、Linuxコマンドの経験はほとんどありません。 2つのファイルがあります。

ファイル1:

a,txt1,v1
b,txt2,v2
c,txt3,v1
d,txt4,v2

ファイル2:

a,txt5,v2
b,txt6,v1
c,txt7,v1
d,txt8,v2

最初の列の値は同じで、3番目の列の値がからから変更された最初の列と3番目の列の値を印刷したいとv1思いますv2。したがって、私の予想結果は次のようになります。

a

v22番目のクエリは、からに変更された3番目の列値に対するものですv1。だから私の予想結果は次のとおりです。

b

ベストアンサー1

$ join -t, file1 file2 | awk -F, '$3 == "v1" && $5 == "v2" { print $1 }'
a

$ join -t, file1 file2 | awk -F, '$3 == "v2" && $5 == "v1" { print $1 }'
b

これは、両方のファイルがソートされていると仮定します。そうでない場合

join -t, <( sort file1 ) <( sort file2 ) | awk ...as above...

このjoinコマンドは

a,txt1,v1,txt5,v2
b,txt2,v2,txt6,v1
c,txt3,v1,txt7,v1
d,txt4,v2,txt8,v2

これは、最初の列を結合キーとして使用して、2つのファイル間のリレーショナル結合の結果です。これには、同じ結合キーを持つ2つのファイルの行と各ファイルの異なるフィールドが一覧表示されます。

awkコードはこれを見て、3列と5列に私たちが探している値がある場合にのみ最初の列を印刷します。

おすすめ記事