设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 综合讨论区 —— LinuxSir.cn
›
shell进阶应用、shell编程
›
sed 中的扩展正则表达式不支持用括号标签()! ...
返回列表
查看:
1190
|
回复:
6
sed 中的扩展正则表达式不支持用括号标签()!
[复制链接]
jiazhengw
jiazhengw
当前离线
积分
103
IP卡
狗仔卡
发表于 2006-2-15 15:18:00
|
显示全部楼层
|
阅读模式
好像sed中扩展正则表达式用括号标签()不行。如下命令:
cat aa.txt|sed -re 's/\([^a-z]+\)/\1 /'
就会报错:
sed:-e 表达式 #1,字符 19:Invalid reference \1 on `s' command's RHS
看它的意思好像是\1标签无效。
但是试下边的命令就可以:
cat aa.txt|sed -e 's/\([^a-z]*\)/\1 /'
我的sed版本是4.0.5,请大家测试。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
ideawu
ideawu
当前离线
积分
1837
IP卡
狗仔卡
发表于 2006-2-15 15:35:04
|
显示全部楼层
已经改为$1引用了,不能用\1。
回复
支持
反对
使用道具
举报
显身卡
jiazhengw
jiazhengw
当前离线
积分
103
IP卡
狗仔卡
楼主
|
发表于 2006-2-15 17:11:52
|
显示全部楼层
现在改为$1引用,没有出错,但现在查找时匹配不到扩展的正则表达式了。是不是因为加了-r参数后,标记\( \)被解释成了括号字符,以免与扩展正则表达式中的括号相混呢?
回复
支持
反对
使用道具
举报
显身卡
jiazhengw
jiazhengw
当前离线
积分
103
IP卡
狗仔卡
楼主
|
发表于 2006-2-15 17:15:36
|
显示全部楼层
刚才试了一下,果然是这样,那扩展正则表达式对部份字符作标签该怎么办呢?
回复
支持
反对
使用道具
举报
显身卡
yongjian
yongjian
当前离线
积分
2576
IP卡
狗仔卡
发表于 2006-2-16 03:18:10
|
显示全部楼层
我没有用过r,sed对reg-ext原本就支持,只是需要在表达式前加\。直接
sed 's/\([^a-z]\+\).*$/\1/'
复制代码
就行。注意,+也是扩展中的,所以也要变成\+.
回复
支持
反对
使用道具
举报
显身卡
jiazhengw
jiazhengw
当前离线
积分
103
IP卡
狗仔卡
楼主
|
发表于 2006-2-16 10:59:27
|
显示全部楼层
原来如此,多谢老大!
回复
支持
反对
使用道具
举报
显身卡
yfreedom
yfreedom
当前离线
积分
64
IP卡
狗仔卡
发表于 2006-5-17 22:24:22
|
显示全部楼层
sed 's/\([^a-z]\+\).*$/\1/'
这里的 .*$ 怎么理解啊?? .是匹配单个字符,* 是匹配0个或多个任意前面出现的字符,$是结尾,组合在一起怎么理解阿??请兄弟们指
教阿(现在知道了)
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Archlinux讨论区
Debian Linux
Mandriva Linux
Redhat/Fedora/CentOS Linux
硬件设备 Linux 驱动
Gentoo Linux
服务器架设、应用、维护
LFS(LinuxfromScratch)
Linux 输入开发与研究
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表