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
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
相关文章推荐
- sed 一些用法
- sed的一些用法
- awk, sed的一些简单用法
- Sed \Awk 的一些用法
- GREP、SED、AWK、TR、SORT、UNIQ的一些用法
- sed 一些用法的解释
- sed一些参数的用法
- shell sed 的一些用法
- GREP、SED、AWK、TR、SORT、UNIQ的一些用法
- 关于正则和sed的一些用法总结。
- sed的一些用法总结
- grep和sed的一些简单的用法
- .net 多线程Task的一些基本用法
- 集合框架Map的一些基本用法
- Manifest.xml下的一些属性定义和用法
- C语言中#宏的一些用法和预编译宏展开问题
- sed简单用法
- 电子邮件 Mailto 的一些参数用法[转载]
- Google Chrome 浏览器的一些命令及用法
- Linux学习日志(12)- 命令echo的一些用法