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