免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8451 | 回复: 12
打印 上一主题 下一主题

sed 中&符号的处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-24 17:11 |只看该作者 |倒序浏览
test.xml
<item>
    <Instance>NULL</Instance>
    <COMMAND>NULL</COMMAND>
</item>
shell脚本(bash)
outputfile=result.out
command_value="/usr/lib/vmware-tools/bin32/vmware-user >/dev/null 2>&1 -blockFd -1"
cat test.xml|sed -e "s#<COMMAND>.*<#<COMMAND>${command_value}<#"  >>$outputfile

result.out:
<item>
    <Instance>NULL</Instance>
    <COMMAND>/usr/lib/vmware-tools/bin32/vmware-user >/dev/null 2><COMMAND>NULL<1 -blockFd -1</COMMAND>
</item>
command_value值中的&被替换成了<COMMAND>NULL<,请问有人知道是怎么回事么?该怎么解决呀,谢谢。

论坛徽章:
0
2 [报告]
发表于 2012-03-24 17:21 |只看该作者
& -> \&

论坛徽章:
0
3 [报告]
发表于 2012-03-24 18:08 |只看该作者
回复 2# hbmhalley


    在这个例子中是可以的,但是如果command_value的值不是事先赋予的,而是在程序中得到的该怎么办呢?
   比如command_value=`echo $line|sed -r 's/(\S+ *){10}//',command_value得到的结果里面包含&符号,该如何进行转义?

论坛徽章:
0
4 [报告]
发表于 2012-03-24 18:47 |只看该作者
本帖最后由 hbmhalley 于 2012-03-24 18:50 编辑

回复 3# 浩天之父


    `echo $line|sed -r 's/(\S+ *){10}//;s,&|\\|/,\\&,g'

论坛徽章:
0
5 [报告]
发表于 2012-03-24 19:02 |只看该作者
回复 4# hbmhalley
我试了下,貌似不行啊,请问 这个s,&|\\|/,\\&,g 看不懂

   

论坛徽章:
0
6 [报告]
发表于 2012-03-24 19:12 |只看该作者
回复 5# 浩天之父


    没打算给你写脚本. 就是说找个能处理的地方处理下就行了。比如你说的这个`echo .. | sed ..' 那就在 sed 里把每行再处理下不就行了
    s,&|\\|/,\\&,g : 逗号为了偷懒不解释;& \ / 这三个在   s//这里/    是需要转义的,于是就在‘它们’(&)前面加'\\'

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
7 [报告]
发表于 2012-03-24 19:38 |只看该作者
  1. [winway@winway test]$ echo "1 & 2" | sed 's/\([^\]\)&/\1\\\&/g'
  2. 1 \& 2
  3. [winway@winway test]$ echo "1 \& 2" | sed 's/\([^\]\)&/\1\\\&/g'
  4. 1 \& 2
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-03-24 20:07 |只看该作者
回复 7# winway1988

echo "1 & 2" | sed 's/\([^\]\)&/\1\\\&/g',sed中的\1是什么意思?


   

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
9 [报告]
发表于 2012-03-24 20:22 |只看该作者
回复 8# 浩天之父


   
\(..\)

保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。

论坛徽章:
0
10 [报告]
发表于 2012-03-24 20:29 |只看该作者
回复 9# winway1988

多谢多谢~


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP