awk言語を使用した2つのファイルの比較

awk言語を使用した2つのファイルの比較

file1とfile2という2つのファイルがあります。最初のファイルのNRをfile2の最初のフィールド(たとえば$ 1)と比較したいと思います。次のようになります: if(file1.NR==file2.$1){次に計算を実行します}。誰でも私を助けてください。

ファイル1

t 0.00031
r 0.000558677
r 0.000558884
r 0.000559019
t 0.000649164
r 0.000897651
r 0.000897716
t 0.000987716
............
............

など。 File1の総行数(NR)は579です。

ファイル2

9 0.00031
17 0.000649164
27 0.000987716
37 0.00129372
47 0.00163994
6 0.00194716
66 0.00227338
.............
.............

など。 File2の総行数(つまり、NR)は82です。

ベストアンサー1

デフォルトでは、2番目のファイルをインデックスとして使用しようとしています。まず、ファイルをフィルタリングして必要な行だけを保持し、結果を1行ずつ処理できます。

処理する awk 行番号の配列を作成する方が簡単かもしれません。

awk 'NR==FNR { array[FNR] = $1 }
NR!=FNR { file1_lines[FNR] = $0 }
END { for(linenum in array) { print file1_lines[array[linenum]] } }' file2 file1

別のファイルにリダイレクトして、フィルタリングなしでファイル全体を処理できます。

おすすめ記事