Файл кота 1
ABC,23
DFG,45
Ghj,678
Cat File2
Listed LinkedIn yellow ABC
Fixed DFG linked ABC
Holiday Europe Ghj DFG
Мне нужен вывод, как показано ниже
Listed LinkedIn yellow 23
Fixed 45 linked 23
Holiday Europe 678 45
Преобразовать file1 в команды для sed и использовать их для изменения file2:
sed -r 's/(.*),(.*)/s,\1,\2,/' file1 | sed -f - file2
Предполагается, что значения в file1 не содержат специальных символов и вы хотите для замены всех вхождений в file2.
Вы можете использовать awk
awk 'FS="," {\
if(NR == FNR) {\
n[(FNR"")] = $0\
} else {\
a[($1)] = $2\
}\
}\
END {\
for (i in n) {\
for (j in a) {\
gsub(j,a[j],n[i])\
}\
print n[i]\
}\
}' File2 File1
Пример
Входные файлы
cat foo [!d5 ]
ABC,23
DFG,45
Ghj,678
cat bar
Listed LinkedIn yellow ABC
Fixed DFG linked ABC
Holiday Europe Ghj DFG
Команда и выход
% awk 'FS="," { if(NR == FNR) {n[(FNR"")] = $0} else {a[($1)] = $2}} END {for (i in n) {for (j in a) {gsub(j,a[j],n[i])} print n[i]}}' bar foo
Listed LinkedIn yellow 23
Fixed 45 linked 23
Holiday Europe 678 45