我的要求是从输入文件中读取字符串,并将所有出现的字符串替换为输出文件。 例如:
$ cat input
BOB_XYZ "JOB.ABC"
ROB_LOLA "TOT.XYZ"
$ cat output
{
BOB_XYZ is a BOB_XYZ
I am BOB_XYZ
}
这里,我需要从输出文件中将“BOB_XYZ”替换为“JOB.ABC”。我的意思是预期输出为
$ cat output
{
"JOB.ABC" is a "JOB.ABC"
I am "JOB.ABC"
}
请告诉我们,我们是如何做到的
答案 0 :(得分:1)
使用awk,这是一种方法。循环遍历input
和output
个文件,将input
中的“变量”收集到数组a
中,并在output
上逐个字段替换
awk 'NR == FNR{a[$1]=$2; next};
{for (i=1; i<=NF; ++i) if ($i in a) $i=a[$i]; print}' input output
答案 1 :(得分:-1)
cat $1 | while read ORIGINAL REPLACEMENT; do
sed -ie "s/$ORIGINAL/$REPLACEMENT/g" $2
done
请注意,这会对输入和输出文件做出很多假设;例如您已正确设置IFS,您没有使用&#39; /&#39;或ORIGINAL或REPLACEMENT等中的某些其他字符