ファイルの内容を置き換える必要がある

ファイルの内容を置き換える必要がある

ついています。内容を含むscript.txtファイルがあります。

$cat script.txt

SET TABLESPACE CONTAINERS FOR 3
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING (
FILE '/db2data2/dbs/rahtest/rahtest1.lrg'  5120
);


SET TABLESPACE CONTAINERS FOR 4
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING (
  FILE   '/db2data2/dbs/rahtest/rahtest2.lrg'  5120
);

私の要件は行のファイルシステムです

FILE '/db2data2/dbs/rahtest/rahtest1.lrg' 5120
FILE   '/db2data1/dbs/rahtest/rahtest2.lrg'  5120

交換する必要があります

/db2data2/dbs/rahtest/rahtest1.lrg

そして

/db2data2/dbs/rahtest/rahtest2.lrg

他のファイルシステムと

/db2data3/dbs/rahtest/rahtest1.lrg

そして

/db2data3/dbs/rahtest/rahtest2.lrg

それぞれ。

他の部分は同じでなければなりません。私の出力は次のようになります -

FILE '/db2data3/dbs/rahtest/rahtest1.lrg'  5120
FILE '/db2data3/dbs/rahtest/rahtest2.lrg'  5120

私のファイルに反映する必要があります。線の中に線がどこにあるのかわかりません。 sedを使ってみました。この行を変数var1とvar2に入れようとしました。

var1=`echo /db2data2/dbs/rahtest/rahtest1.lrg'
var2=`echo /db2data2/dbs/rahtest/rahtest2.lrg'
var3=`echo /db2data3/dbs/rahtest/rahtest1.lrg'
var4=`echo /db2data3/dbs/rahtest/rahtest2.lrg'

私がしようとしているとき

sed 's/$var/$var3' script.txt

/があるので失敗します。私はAIXを使用しています。私の最終ファイルは次のようになります -

SET TABLESPACE CONTAINERS FOR 3
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING (
FILE '/db2data3/dbs/rahtest/rahtest1.lrg'  5120
);


SET TABLESPACE CONTAINERS FOR 4
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING (
  FILE   '/db2data3/dbs/rahtest/rahtest2.lrg'  5120
);

ベストアンサー1

テキストにaがある場合は、sedパラメータの区切り文字として/aなどの他の文字を使用できます。また、変数を使用すると、単一引用符内に変数は拡張されないため、コマンドに二重引用符()を使用する必要が|あります。この試み:""sed

var1='/db2data2/dbs/rahtest/rahtest1.lrg'
var2='/db2data2/dbs/rahtest/rahtest2.lrg'
var3='/db2data3/dbs/rahtest/rahtest1.lrg'
var4='/db2data3/dbs/rahtest/rahtest2.lrg'

sed -e "s|$var1|$var3|g" -e "s|$var2|$var4|" script.txt

おすすめ記事