2


ファイル 1 のような複数のファイルを処理するために awk を使用したいと思います。

1 1.045
2 1.033
3 1.029

ファイル 2:

1 1.078
2 1.080
3 1.090

しかし、各ファイルから特定のフィールドを保存し、それらをすべて1行に出力することに興味があります。たとえば、出力が次のようになるように、両方のファイルの 2 行目の 2 番目のフィールドが必要です。

1.033 1.080

問題のフィールドを各ファイルから別の変数または配列の別のフィールドに格納する awk を取得できますか? 私は試した:

awk '
BEGIN{}
FNR==2{var1=$2;nextfile}
FNR==2{var2=$2}
END{printf "%6.3f    %6.3f\n", var1,var2}' file1 file2

ただし、これにより var1 が 2 番目のファイルのフィールドで上書きされ、var2 は処理されません。

4

4 に答える 4

2

別のアプローチ:

$ paste file1 file2 | awk 'NR==2{print $2,$4}'
1.033 1.080
于 2013-03-07T17:56:07.420 に答える
2

あなたの例では、3 行目は評価されません。次のように解決できます。

awk '
BEGIN{}
FNR==2 && !var1 {var1=$2;nextfile}
FNR==2{var2=$2}
END{printf "%6.3f    %6.3f\n", var1,var2}' file1 file2

しかし、このアプローチは一般化するのが難しいので、次のようにします。

awk 'FNR==row { printf "%6.3f    ", $col } END { printf "\n" }' row=2 col=2 file1 file2

出力:

1.033     1.080
于 2013-03-07T17:27:45.613 に答える
0

これが欲しいですか?

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

出力:

1.045 1.078
1.033 1.080
1.029 1.090
于 2013-03-07T16:55:49.580 に答える
0

試す別のアプローチ:

awk '{p=$2; getline<f} NR==2{print p,$2; exit}' f=file2 file1
于 2013-03-07T20:43:42.370 に答える