多くの行を含む2つの.csvファイル(カンマ区切り)があります。次の2つのファイルのサンプル項目は次のとおりです。 n.csv:
X,I180,10.5.5.180,,833-006366,00,N-D,,,5.2,A52.604,5.2.02,,,,,,,8471 FX,,,,,
ファイル.csv:
X,3FE,1,I180,,,,I180:LT13,,,,,,,,,,,0,,,,,,NLS-A
私がしたいことは:
- 1)f.csvのフィールド($ 2、$ 4、$ 8、$ 12、$ 25)を取得し、新しい出力.csvファイルの最初の列に印刷します。
- 2)n.csvの$ 2がf.csvの$ 4と一致する場合は、n.csvファイルの$ 7フィールドを取得して、新しい出力.csvファイルの最後の列に印刷します。
したがって、必要な出力は次のようになります。
3FE,I180,I180:LT13,,NLS-A,N-D
次のコマンドを試しましたが、最後の列にn.csvファイルの$ 7が印刷されました。
awk 'BEGIN { FS = OFS = "," ; } FNR==NR{ne_model[$2]=$7;x[$2]=$2;next} { if ($4!="" && $4 in x) {print $2,$4,$8,$12,$25,ne_model[$2]} }' n.csv f.csv
3FE,I180,I180:LT13,,NLS-A,
私が何を見逃しているのかを理解するのに役立ちますか?
ベストアンサー1
君$2
から までn.csv
合わないf.csv
努力する
awk 'BEGIN { FS = OFS = "," ; }
FNR==NR{ne_model[$2]=$7;x[$2]=$2;next}
{ if ($4!="" && $4 in x) {print $2,$4,$8,$12,$25,ne_model[x[$4]]} }' n.csv f.csv
私は(読みやすくするために複数行に分割しましたne_model[$2]
)ne_model[x[$4]]
これは
3FE,I180,I180:LT13,,NLS-A,N-D