Chinaunix

标题: sed 今天发现一个奇怪的问题 [打印本页]

作者: jack城    时间: 2010-03-03 10:44
标题: sed 今天发现一个奇怪的问题
sed 版本:
NAME
       sed - manual page for sed version 4.1.4

问题:
假设有个文件file1内容为
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><ServiceInf>
  </Service>
</ServiceInf>

我想将最后一行的内容使用全字匹配来执行的,sed 's/\<\/ServiceInf\>/111111/g' file1
>sed 's/\<\/ServiceInf\>/111111/g' file1
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><ServiceInf>
  </Service>
</ServiceInf>  


但是结果,文件内容被替换,请各位大侠帮忙指导下^_^
作者: iori809    时间: 2010-03-03 10:50
把你想要的结果弄出来好吗
作者: blackold    时间: 2010-03-03 11:13

作者: w3wu    时间: 2010-03-03 11:32
sed 's%\<\/ServiceInf\>%11111%g' file1
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><ServiceInf>
  </Service>
11111

是要这结果吗?
作者: Shell_HAT    时间: 2010-03-03 11:44
但是结果,文件内容被替换

你不就是希望替换么,现在它替换了,你还想咋地?
作者: Shell_HAT    时间: 2010-03-03 11:46
想要这样?
$ sed 's/<\/ServiceInf>/111111/g' urfile
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><ServiceInf>
  </Service>
111111

作者: blackold    时间: 2010-03-03 11:49
你不就是希望替换么,现在它替换了,你还想咋地?
Shell_HAT 发表于 2010-03-03 11:44



   
作者: jack城    时间: 2010-03-03 20:44
回复 5# Shell_HAT


    写错了,不好意思呀,我的意思是需要替换,但是实际是没有替换的
作者: jack城    时间: 2010-03-03 20:46
回复 6# Shell_HAT


     是需要这样的结果,但是我执行的命令为什么替换不了呢?而是把原文件打印出来啦
作者: iori809    时间: 2010-03-03 21:09
应该是你转义了 \<\>的原因。可能是版本的问题。我的就必须转义才能替换
你的可能不用转义就能
作者: Shell_HAT    时间: 2010-03-03 21:13
回复 9# jack城


我的命令跟你的命令不一样^_^
作者: jack城    时间: 2010-03-04 08:55
回复 11# Shell_HAT


    果然是的  搞定了  不过这样还真是麻烦 写个脚本 在各个环境还不能通用

ocs104 [b4cbp11] :/home1/b4cbp11/service/app/servicefile 64 >sed 's/<\/ServiceInf>/1111/g' file1
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><ServiceInf>
  </Service>
1111




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2