3

我的要求是从输入文件中读取字符串,并将其所有出现的字符串替换为输出文件。例子:

$ 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"
} 

请告诉我,我们如何做到这一点

4

2 回答 2

1

使用 awk,这是一种方法。循环遍历文件inputoutput将“变量”收集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
于 2013-09-24T01:26:44.790 回答
-1
cat $1 | while read ORIGINAL REPLACEMENT; do
  sed -ie "s/$ORIGINAL/$REPLACEMENT/g" $2
done

请注意,这对输入和输出文件做了很多假设;例如,您已正确设置 IFS,您没有在 ORIGINAL 或 REPLACEMENT 中使用“/”或某些其他字符等。

于 2013-09-24T01:28:04.773 回答