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 を使用して、これを行う 1 つの方法を次に示します。ファイルをループして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 に答える