您的位置:首页 > 其它

sed一些用法

2012-05-25 00:29 337 查看
sed 's/\(.\)/& /g'

sed 's/\(.\)/\1 /g'

注意区别,\1必须和 \(..\)一起使用 &则不需要

\(..\)

保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。

&

保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。

假设:

/pattern/ 为 /abc\([0-9]*\)/

那么匹配 fooabc123foobar 时,命中。整个正则匹配的整个字符串为 abc123, 即 & 为 abc123,

而第1个()子表达式所匹配的字符串为 123, 即 \1 为123。

-r, --regexp-extended

use extended regular expressions in the script.

实例一
[rockfall@tmp]$echo "aaa bbb "|sed -r 's/(.)/A/'

Aaa bbb

[rockfall@tmp]$echo "aaa bbb "|sed 's/(.)/A/'

aaa bbb

[rockfall@tmp]$echo "aaa bbb "|sed 's/\(.\)/A/'

Aaa bbb

实例二
一文件: test.txt,内容如下:

#---------------------------------#

abc1234567890

abc0987654321

xyz1234567890

#---------------------------------#

想输出结果:

1234567890

0987654321

1234567890

sed 命令: sed -n 's/^\([a-z]\{3\}\)\([0-9]\{3,\}\)/\2/p' test.txt 是成功的

但如果用: sed -r -n 's/^\([a-z]{3}\)\([0-9]{3,}\)/\2/p' test.txt 则提示 invalid refrence\2 on 's' commands s RHS

何解?

你都用了-r了,还给括号前加\,当然不行了,还加\的括号就代表原义括号了

实例三
替换出常规的ip地址
[root@asmboy shell]# echo 202.038.008.090|sed 's/0\+\([0-9]\+\)/\1/g'

22.38.8.90

[root@asmboy shell]# echo 202.038.008.090|sed -r 's/0+([0-9]+)/\1/g'

22.38.8.90

总之一句话,想少用\ 那你就用-r

本文出自 “流星 ” 博客,请务必保留此出处http://lsscto.blog.51cto.com/779396/876874
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: