正则表达式 's/(.*)(11 )(.*)(22 )(.*)(33 )(.*)(44)/\1\2\4\6\8/'

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
cafee
帖子: 14
注册时间: 2009-05-11 9:38

正则表达式 's/(.*)(11 )(.*)(22 )(.*)(33 )(.*)(44)/\1\2\4\6\8/'

#1

帖子 cafee » 2012-12-13 10:20

遇到一个sed处理
正则表达式这样的,怎么理解:
s/(.*)(11 )(.*)(22 )(.*)(33 )(.*)(44)/\1\2\4\6\8/
情难自禁,我其实属于极度咸湿的男人~~
头像
mjp123
帖子: 703
注册时间: 2009-04-09 15:06

Re: 正则表达式 's/(.*)(11 )(.*)(22 )(.*)(33 )(.*)(44)/\1\2\4\6\8/

#2

帖子 mjp123 » 2012-12-13 10:29

查找替换。
如:aa11bb22cc33dd44替换后为aa11223344。
不知对否?
头像
oneleaf
论坛管理员
帖子: 10455
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 正则表达式 's/(.*)(11 )(.*)(22 )(.*)(33 )(.*)(44)/\1\2\4\6\8/

#3

帖子 oneleaf » 2012-12-13 10:36

$ echo "aaa11 bbb22 ccc33 ddd44"|sed 's/\(.*\)\(11 \)\(.*\)\(22 \)\(.*\)\(33 \)\(.*\)\(44\)/\1\2\4\6\8/'
aaa11 22 33 44
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 正则表达式 's/(.*)(11 )(.*)(22 )(.*)(33 )(.*)(44)/\1\2\4\6\8/

#4

帖子 cao627 » 2012-12-13 11:15

s/查找的内容/替换的内容/
替换内容中的\1 指代查找的内容中第 1 个括号中表达式匹配的内容, \2 \4 \6 \8指代相应括号中表达式匹配到的内容。

在bash shell中 括号( 和 )要转意 写成 \( 和 \)
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 正则表达式 's/(.*)(11 )(.*)(22 )(.*)(33 )(.*)(44)/\1\2\4\6\8/

#5

帖子 eexpress » 2012-12-13 14:03

现在的正则,都带命名了。可以不用\1\2这样数数字了。
你这正则,明显不是完整的正则,没有环视,所以搞这么复杂。11 33 这样固定的,还写成匹配,蛋疼。
● 鸣学
回复