参照ファイルから値を挿入する

参照ファイルから値を挿入する

何千もの行を含む毎日のCSVファイルがあります。
2つの列を連結し、特定の列の値が他のファイルのテーブルと一致する場合は、新しい列を挿入するように求められます。 NULL値が予想されます。

単純化されたデータ(列3の組み合わせ):

毎日.csv

HVDS,1810,HVDS_1810,"match value",xxxxx
HVRS,5230,HVRS_5230,"match value",xxxxx
WPHV,0,WPHV_0000,"no match",xxxxx

参照ファイルには2つの列があります。 $ 1を検索して上記の$ 2を挿入してください。

参照.csv

HVDS_1810,dfTVfsd
HVRS_5230,UtsfeOO
WPHV_4242,BBnnstd

どこから始めるべきかについていくつかのアイデアが必要です。

ベストアンサー1

私が正しく理解したら、あなたの質問で「矛盾」をの値に置き換える必要がありますref.csv。考えられる解決策は次のとおりですawk

awk -F',' 'BEGIN { OFS = "," } FNR==NR { m[$1] = $2; next; } { if ($3 in m) { $4 = "\"" m[$3] "\""; } else { $4 = "\"" "\""; } print; }' ref.csv daily.csv

説明:
FNR==NR最初のファイルを読み取ると True です。 indexの最初の列とvalueの3番目の列で配列を作成します
。次に、2番目のブロックから2番目のファイルを読み取り(最初のブロックのコマンドのため)、列3が配列のインデックスであることを確認し、そうであれば新しい列の値を設定します。それ以外の場合はnullを設定します。m
nextm

おすすめ記事