2つのファイルの列を比較する

2つのファイルの列を比較する

ファイル1:

judi /export/home 76
judi /usr 83

ファイル2:

judi /export/home 79
judi /usr 82

File2 の COLUMN3 が File1 の COLUMN3 より大きい場合、コマンドは File2 の行を出力します。たとえば、上記のファイルの場合、コマンドは次のように出力します。

judi /export/home 79 

そしてそうではありません:

judi /usr 82

答え1

使用方法awk:

awk 'NR==FNR{x[NR]=$3}{if($3>x[FNR]){print}}' File1 File2
  • NR==FNR{x[NR]=$3}: 現在のレコード番号が現在のファイル レコード番号と等しい場合 (つまり、最初のファイルを処理している場合)、3 番目のフィールドの値をx[NR];に割り当てます。
  • {if($3>x[FNR]){print}}: 3 番目のフィールドが より大きい場合はx[FNR]、レコードを出力します。
% cat File1
judi /export/home 76
judi /usr 83
% cat File2
judi /export/home 79
judi /usr 82
% awk 'NR==FNR{x[NR]=$3}{if($3>x[FNR]){print}}' File1 File2
judi /export/home 79

関連情報