awk は file1 から同じフィールド値を取得し、file2 に設定します。

awk は file1 から同じフィールド値を取得し、file2 に設定します。

ファイル1(親)

2210 1110 Earth
2211 1111 Marse
2212 1112 Saturn
2213 1113 Pluto

ファイル2(サブ)

3310 2210 Earth
3311 2210 Space
3312 2211 Mars
3313 2211 Space
3314 2212 Saturn
3315 2212 Space
3316 2213 Pluto
3317 2213 Space

予想される

3310 2210 Earth
3311 2210 Earth
3312 2211 Mars
3313 2211 Mars
3314 2212 Saturn
3315 2212 Saturn
3316 2213 Pluto
3317 2213 Pluto

したがって、ファイル 2 の $2 をファイル 1 の $1 と比較し、ファイル 2 の $3 値をファイル 2 の $3 と同じに設定する必要があります。

ベストアンサー1

$ awk 'FNR==NR {planet[$1]=$3; next} {$3=planet[$2]; print}' file1 file2
3310 2210 Earth
3311 2210 Earth
3312 2211 Marse
3313 2211 Marse
3314 2212 Saturn
3315 2212 Saturn
3316 2213 Pluto
3317 2213 Pluto
  • FNR==NR「最初のファイルを解析するとき」を意味する慣用語ですawknext最初のファイルの残りのコードが実行されないようにするには、この条件の操作を終了する必要があります。

  • 惑星フィールドはハッシュ配列に格納され、2番目のファイルを読み取るときに最後のフィールドに割り当てます。

おすすめ記事