他の2列のcsvテーブルを使用してcsvファイル内で一致するパターンを交換する方法

他の2列のcsvテーブルを使用してcsvファイル内で一致するパターンを交換する方法

csv2(どこでも)でcsv1(列1)のパターンを見つけて、csv1(列2)のパターンと置き換えたいと思います。

このように:

-csv1-

列1 2列
AA 電子データセンター
BB ysc
CC CD
DD エルグ

...など

-csv2-

列1 2列 3列 ...等(より多くの列)
BB キロジュール ワア PDS
xsd tkp エテップ AA
xrg AA DD CC
プリンセス レコ BLB DD
ティフィ 簡単 CC ワールドワイドウェブ

解決策はこの投稿に似ています…2つの異なるcsvファイルの列を比較し、異なるファイルの列を置き換える方法

提案:

$ awk '
    BEGIN { FS=OFS="," }
    NR==FNR { map[$1] = $2; next }
    (FNR>1) && ($4 in map) { $4 = map[$4] }
1' file2 file1

これは私にとって効果的です。 4番目の列だけでなく、すべての列を検索するように指定するだけです。

答え1

単一の列の代わりにすべての列をチェックインするには、すべての列を繰り返して、各列を置き換えるかどうかを確認する必要があります。

awk '
BEGIN { FS=OFS="," }
NR==FNR { map[$1] = $2; next }
FNR>1{
       for (i=1; i<=NF; i++) $i = ($i in map?map[$i]:$i)
}1' csv1 csv2

関連情報