sed不能处理变量

这是我的sh文件内容:

for file in *.html
do
aa=`grep -o '<div id\=\"vdl.*' $file `
bb=`grep -o '<a href\=\"inde.*下一页<\/a>'  $file `
sed -i "s/$aa/$bb/g"  $file
done

执行: bash -x ./1.sh
结果如下

+ for file in *.html
++ grep -o '<div id\=\"vdl.*' 10621997.html
+ aa='<div id="vdl"><script>show_vdl();</script> </div><div id="vfmt"><script>show_vfmt();</script> </div><div id="vf1"><script>show_vf1();</script></div><div id="vf2"><script>show_vf2();</script></div><div id="footlink"><a href="10621996.html">上一页</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="/ '
++ grep -o '<a href\=\"inde.*下一页<\/a>' 10621997.html
+ bb='<a href="index.html">世界上下五千年</a></div><div id="linkright"><a href="10621996.html">上一页</a> |   | <a href="10621998.html">下一页</a>'
+ sed -i 's <div id="vdl"><script>show_vdl();</script> </div><div id="vfmt"><script>show_vfmt();</script> </div><div id="vf1"><script>show_vf1();</script></div><div id="vf2"><script>show_vf2();</script></div><div id="footlink"><a href="10621996.html">上一页</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="/  <a href="index.html">世界上下五千年</a></div><div id="linkright"><a href="10621996.html">上一页</a> |   | <a href="10621998.html">下一页</a>  10621997.html'
sed:-e 表达式 #1,字符 46:“s”的未知选项
+ for file in *.html
++ grep -o '<div id\=\"vdl.*' 10621998.html
+ aa='<div id="vdl"><script>show_vdl();</script> </div><div id="vfmt"><script>show_vfmt();</script> </div><div id="vf1"><script>show_vf1();</script></div><div id="vf2"><script>show_vf2();</script></div><div id="footlink"><a href="10621997.html">上一页</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="/ '
++ grep -o '<a href\=\"inde.*下一页<\/a>' 10621998.html
+ bb='<a href="index.html">世界上下五千年</a></div><div id="linkright"><a href="10621997.html">上一页</a> |   | <a href="10621999.html">下一页</a>'
+ sed -i 's <div id="vdl"><script>show_vdl();</script> </div><div id="vfmt"><script>show_vfmt();</script> </div><div id="vf1"><script>show_vf1();</script></div><div id="vf2"><script>show_vf2();</script></div><div id="footlink"><a href="10621997.html">上一页</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="/  <a href="index.html">世界上下五千年</a></div><div id="linkright"><a href="10621997.html">上一页</a> |   | <a href="10621999.html">下一页</a>  10621998.html'
sed:-e 表达式 #1,字符 46:“s”的未知选项

求教如何更改,谢谢。

阅读 3.3k
2 个回答
✓ 已被采纳新手上路,请多包涵

我估计sed一个命令只能处理单一行的内容,不能处理两行
所以我换个办法,解决了。

for file in *.html
do
grep -o  '<a href\=\"inde.*下一页<\/a>'  $file  > /tmp/linshi
sed  -i -e '/<div id\=\"vdl/r /tmp/linshi'  -e '/<div id\=\"vdl/d'  $file
done

sed -i "s|$aa|$bb|g"  $file

这样试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进