-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
阅读(8041) | 评论(0) | 转发(0) |