1、需求
把文件a.html中
1. SP01 PL02 替换为 SP03 PL04. 注意有两个空格 红色的
2. abc12 替换为 efg34
--------------------------------------------------------------a.html--------------------------------------------------------
<LI>Version: SP01 PL02
<LI>Project: abc12
2、思路和问题
#oldstr/newstr 定义替换规则数组
rule_array=(
"SP01\ PL02/SP03\ PL04"
"abc12/efg34"
)
#循环数组,替换文件 sed 命令用法:
sed -i "s/old/new/g" file
for (( i=0;i<${#rule_array[*]};i++ ))
do
sed -i "s/${rule_array[$i]}/g" a.html
done
do
sed -i "s/${rule_array[$i]}/g" a.html
done
报错
sed: -e expression #1, char 6: unterminated `s' command
3、 解决办法
----------------------------------------------------------------------------------------------------------------------------------------------
# 注意红色的\ 的转义符
rule_array=(
"SP01\ PL02/SP03\PL04"
"abc12/efg34"
)
#注意红色部分
for (( i=0;i<${#rule_array[*]};i++ ))
do
cmd="sed -i "s/${rule_array[$i]}/g" a.html"
do
cmd="sed -i "s/${rule_array[$i]}/g" a.html"
eval $cmd
done
done
--------------------------------------------------------------------------------------
也可以把数组定位为 :
rule_array=(
"\"SP01 PL02\"/\"SP03 PL04\""
"\"SP01 PL02\"/\"SP03 PL04\""
"abc12/efg34"
)
)