スクリプトで2つのファイルを比較して交換するときにAWKがどのように機能するか

スクリプトで2つのファイルを比較して交換するときにAWKがどのように機能するか

以下のスクリプトでは、awkファイルの名前を変更すると、2つの異なる結果が表示されます。 awkが出力をコンソールに書き込む方法を知りたいです。それぞれのケースで異なる結果が得られます。

ファイル1:

abc bca cdb

abc few bre

bbc bba cdb

cbc frw bte

ファイル2:

abc bca cdb

gbc fiw bpe

bbc bca cdb

cbc frw bte

スクリプト:

awk 'FNR==NR {a[$1$2$3]++;next};!(($1$2$3) in a)' **file1 file2**

出力:

gbc fiw bpe

bbc bca cdb

スクリプト:

awk 'FNR==NR {a[$1$2$3]++;next};!(($1$2$3) in a)' **file2 file1**

出力:

abc few bre

bbc bba cdb

答え1

file2最初のコマンドは で見つからない行を提供し、2 番目のコマンドは で見つからfile1ない行を提供します。file1file2

与えられたデータのコードは次のようになります。

awk 'FNR==NR { a[$0]++; next } !($0 in a)'

a次の配列はどこにありますか?最初文書。最後の条件は、「最初のファイルで行が見つからない場合は(2番目のファイルから)行を印刷してください」です。

関連情報