awkから同様の値を除外

awkから同様の値を除外

次の記事を検討してください。

ファイル1:

boo,194,2322
foo,999,7559

ファイル2:

boo,2322
boo,4526
foo,4222
foo,4223

Field1リンクが必要です。ファイル1Field1以内にファイル2Field2そして関連情報を入手してください。ファイル2Field3、結果がinと等しい場合は結果を除外します。ファイル1

結果は次のとおりです。

boo,4526
foo,4222,4223

以下のスクリプトを試しましたが、同様の値を除外しません。

awk -F, 'NF==3{arr[$1]=$3}{if(arr[$1]==$1){print $2}}'

答え1

$1であることを確認arrし、その場合は値が異なる場合は$2印刷する必要があります。

awk -F, 'FNR == NR { arr[$1] = $3; next }
         { if ($1 in arr && arr[$1] != $2) print $2 }'

FNR == NRとを使用することは、next他のファイルの行と他の最初のファイルの行を処理する伝統的な方法です。はい、1行に並べて配置できますが、APL(またはPerl)を作成しない限り、「1行」は軽蔑的な用語です。

関連情報