免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助个关于sed正则的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-22 13:47 |只看该作者 |倒序浏览
正则表达式识别不出来是什么原因啊sed -i  's/To/to/g' text和sed -i 's/\<To\>/to/g' text
第一条能正常运行,第二条就一个都找不到

大多数正则里面都正常比如^和$都ok,唯独这个 \< \>不行…求教各位大大啊……

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [报告]
发表于 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
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
3 [报告]
发表于 2014-12-22 13:56 |只看该作者
不需要转义
[root@WLS1 tmp]# cat a.txt
<To>
[root@WLS1 tmp]# sed 's/<To>/to/g' a.txt
to

论坛徽章:
0
4 [报告]
发表于 2014-12-22 13:58 |只看该作者
回复 2# Herowinter


    echo -e "To Eric\nStrToInt"|sed 's/\<To\>/to/g'
To Eric
StrToInt
我这里两段代码结果都是这样的,囧,我是osx的系统bash是3.2的……

论坛徽章:
0
5 [报告]
发表于 2014-12-22 13:59 |只看该作者
回复 3# Shell_HAT


    \<和\>是我用来找词首和词尾的,GOTO这样的TO我不想替换的

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
6 [报告]
发表于 2014-12-22 14:03 |只看该作者
回复 4# w3032084


    去GNU下载一个新版本的sed试试

论坛徽章:
7
申猴
日期:2014-12-21 13:57:24巳蛇
日期:2014-12-25 22:27:08申猴
日期:2015-01-19 08:07:36辰龙
日期:2015-02-04 11:40:06处女座
日期:2015-02-04 11:40:412015年亚洲杯之卡塔尔
日期:2015-03-06 12:01:322015年亚洲杯之乌兹别克斯坦
日期:2015-03-31 13:43:57
7 [报告]
发表于 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

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
8 [报告]
发表于 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
...

论坛徽章:
0
9 [报告]
发表于 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.

论坛徽章:
0
10 [报告]
发表于 2014-12-22 14:43 |只看该作者
goofool 发表于 2014-12-22 14:05
这个元字符不是所有的软件都支持的。
额,我试试安装个GUN的sed试试……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP