2つのファイルがありますが、file1の値をfile2の値に置き換えたいと思います。
ファイル1:
Normal A1
Normal A2
Normal A2,A3
Normal A4
ファイル2:
APP1 A1
APP2 A2
APP3 A3
APP4 A4
予想される結果:
Normal APP1
Normal APP2
Normal APP2,APP3
Normal APP4
次のコマンドを試しましたが、期待した結果が得られませんでした。
awk 'NR == FNR{a[$2]=$1; next}; -F "," {for (i=1; i<=NF; ++i) if ($i ~ ",") $i=a[$i]; else if ($i in a) $i=a[$i]; print}' File2 File1
ベストアンサー1
可能性の一つawk
方法:
awk -F'[[:space:]]+|,' 'NR == FNR{ a[$2] = $1; next }
{
c = 0; r = $1 OFS;
for (i = 2; i <= NF; i++)
if ($i in a) { r = r (c++? "," : "") a[$i] }
if (!c) r = r $2;
print r
}' file2 file1
出力:
Normal APP1
Normal APP2
Normal APP2,APP3
Normal APP4