Chinaunix

标题: 求助个关于sed正则的问题 [打印本页]

作者: w3032084    时间: 2014-12-22 13:47
标题: 求助个关于sed正则的问题
正则表达式识别不出来是什么原因啊sed -i  's/To/to/g' text和sed -i 's/\<To\>/to/g' text
第一条能正常运行,第二条就一个都找不到

大多数正则里面都正常比如^和$都ok,唯独这个 \< \>不行…求教各位大大啊……
作者: Herowinter    时间: 2014-12-22 13:55
回复 1# w3032084

表示没问题.
  1. echo -e "To Eric\nStrToInt"|sed 's/\<To\>/to/g'
  2. to Eric
  3. StrToInt
复制代码
要不你改成\b试试?
  1. echo -e "To Eric\nStrToInt"|sed 's/\bTo\b/to/g'
  2. to Eric
  3. StrToInt
复制代码

作者: Shell_HAT    时间: 2014-12-22 13:56
不需要转义
[root@WLS1 tmp]# cat a.txt
<To>
[root@WLS1 tmp]# sed 's/<To>/to/g' a.txt
to

作者: w3032084    时间: 2014-12-22 13:58
回复 2# Herowinter


    echo -e "To Eric\nStrToInt"|sed 's/\<To\>/to/g'
To Eric
StrToInt
我这里两段代码结果都是这样的,囧,我是osx的系统bash是3.2的……
作者: w3032084    时间: 2014-12-22 13:59
回复 3# Shell_HAT


    \<和\>是我用来找词首和词尾的,GOTO这样的TO我不想替换的
作者: Shell_HAT    时间: 2014-12-22 14:03
回复 4# w3032084


    去GNU下载一个新版本的sed试试
作者: goofool    时间: 2014-12-22 14:05
本帖最后由 goofool 于 2014-12-22 14:26 编辑

这个元字符不是所有的软件都支持的。

QQ截图20141222142409.png (2.13 KB, 下载次数: 38)

QQ截图20141222142409.png

QQ截图20141222142428.png (3.31 KB, 下载次数: 41)

QQ截图20141222142428.png

作者: jason680    时间: 2014-12-22 14:17
本帖最后由 jason680 于 2014-12-22 14:18 编辑

回复 4# w3032084

1. sed with \< and \>
$ echo "To Eric StrToInt" | sed 's/\<To\>/to/g'
to Eric StrToInt

2. sed with \b and \b
$ echo "To Eric StrToInt" | sed 's/\bTo\b/to/g'
to Eric StrToInt

3. perl
$ echo "To Eric StrToInt" | perl -pe 's/\bTo\b/to/g'
to Eric StrToInt

$ sed --version
GNU sed version 4.2.1
...


作者: fangang001    时间: 2014-12-22 14:27
[/ngbss/webapp]echo "To Eric StrToInt" | sed 's/\<To\>/to/'
to Eric StrToInt
[/ngbss/webapp]sh --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
作者: w3032084    时间: 2014-12-22 14:43
goofool 发表于 2014-12-22 14:05
这个元字符不是所有的软件都支持的。
额,我试试安装个GUN的sed试试……
作者: w3032084    时间: 2014-12-22 17:24
果然是sed的问题= = 换了个gnu的sed就没问题了,谢谢各位啦~




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