2つのファイルの最初の列を比較し、最初の列が一致した場合は、2番目のファイルの行全体を印刷します。

2つのファイルの最初の列を比較し、最初の列が一致した場合は、2番目のファイルの行全体を印刷します。

次の形式のファイルが2つあります。

ファイル1:

air
smell
hand
dude
road
cat

ファイル2:

air,4,21,01,13,3,2
smell,21,4,2,5,6
dude,1,31,42,1
road,1,4,2,1,4
cat,1,5,6,3,1
hand,1,4,2,1,6
mouse,1,3,5,6,2

私がしたいのは、ファイル2の列1の最初の文字列がファイル1にある場合は、ファイル2の行全体を印刷してファイル1の順序を維持したいと思います。

予想出力:

air,4,21,01,13,3,2
smell,21,4,2,5,6
hand,1,4,2,1,6
dude,1,31,42,1
road,1,4,2,1,4
cat,1,5,6,3,1

ベストアンサー1

これにより、トリックを実行できます。

awk -F, 'FNR==NR {a[$1]; next}; $1 in a' file1 file2

編集する:

無効な注文文書の説明です。新しい試み(gawk許可されている場合は必須)

gawk -F, '
    FNR==NR {a[NR]=$1; next}; 
    {b[$1]=$0}
    END{for (i in a) if (a[i] in b) print b[a[i]]}
' file1 file2

編集2:

nowmalawkファイルとスワップファイルを使用してください。

awk -F, 'FNR==NR {a[$1]=$0; next}; $1 in a {print a[$1]}' file2 file1

おすすめ記事