ついています。内容を含む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