我陷入了困境。我有一个包含内容的文件 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
);
Run Code Online (Sandbox Code Playgroud)
我的要求是行中的文件系统
FILE '/db2data2/dbs/rahtest/rahtest1.lrg' 5120
FILE '/db2data1/dbs/rahtest/rahtest2.lrg' 5120
Run Code Online (Sandbox Code Playgroud)
我需要更换
/db2data2/dbs/rahtest/rahtest1.lrg
Run Code Online (Sandbox Code Playgroud)
和
/db2data2/dbs/rahtest/rahtest2.lrg
Run Code Online (Sandbox Code Playgroud)
与其他文件系统;说
/db2data3/dbs/rahtest/rahtest1.lrg
Run Code Online (Sandbox Code Playgroud)
和
/db2data3/dbs/rahtest/rahtest2.lrg
Run Code Online (Sandbox Code Playgroud)
分别。
其他部分应该是一样的。我的输出现在是这样的——
FILE '/db2data3/dbs/rahtest/rahtest1.lrg' 5120
FILE '/db2data3/dbs/rahtest/rahtest2.lrg' 5120
Run Code Online (Sandbox Code Playgroud)
它应该反映在我的文件中。我不知道线条在线条中的位置。我用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'
Run Code Online (Sandbox Code Playgroud)
当我试图做
sed 's/$var/$var3' script.txt
Run Code Online (Sandbox Code Playgroud)
它失败了,因为 / 在那里。我正在使用 AIX。我的最终文件应该是这样的——
SET …Run Code Online (Sandbox Code Playgroud)