shell正则如何匹配()/等符号?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
谢宝良
帖子: 1983
注册时间: 2010-05-01 21:23

shell正则如何匹配()/等符号?

#1

帖子 谢宝良 » 2014-06-25 19:18

如题。
比如像 (1+2)=3 (1:2)=0.5 (1/2)=0.5
如何提取1和2出来吗?
ubunbates
帖子: 120
注册时间: 2014-04-30 15:44
系统: linux

Re: shell正则如何匹配()/等符号?

#2

帖子 ubunbates » 2014-06-25 20:49

1和2出现N次, 你指的是哪次的1和2?

若是最后一个唯一有"/"的, 那么

代码: 全选

echo "(1+2)=3 (1:2)=0.5 (1/2)=0.5" |sed 's/\(^.*\)(\(.*\)\/\(.*\)).*$/\2 \3/'
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: shell正则如何匹配()/等符号?

#3

帖子 cao627 » 2014-06-25 21:43

如果是中文的小括号:

代码: 全选

echo "(1+2)=3 (3:4)=0.5 (5/6)=0.5" | grep -oP '(?<=().|.(?=))'
1
2
3
4
5
6
如果是英文的括号,用斜杠转意
grep -oP '(?<=\().|.(?=\))'
谢宝良
帖子: 1983
注册时间: 2010-05-01 21:23

Re: shell正则如何匹配()/等符号?

#4

帖子 谢宝良 » 2014-06-25 23:06

请问shell的正则如何表示 或者

还有如何去掉某个特定的字符如(,/
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: shell正则如何匹配()/等符号?

#5

帖子 cao627 » 2014-06-26 15:30

请问shell的正则如何表示 或者
首先,弄清一个概念
shell本身不支持正则,是工具程序如: sed ,awk ,grep 支持正则。
如楼上,两条命令行中,shell只是负责将单引号‘ ’中间的字符串如实传给 sed和 grep,然后sed和grep将这个字符串当作一个正则表达式来处理。
回复