sed实例大全
时间:2007-03-14 来源:herolyh
一.在 sed 中实现记数器.可加 1 或减 1
加1,代码如下:
: a
s/9\(_*\)$/_\1/
t a
s/^\(_*\)$/0\1/
s/8\(_*\)$/9\1/
s/7\(_*\)$/8\1/
s/6\(_*\)$/7\1/
s/5\(_*\)$/6\1/
s/4\(_*\)$/5\1/
s/3\(_*\)$/4\1/
s/2\(_*\)$/3\1/
s/1\(_*\)$/2\1/
s/0\(_*\)$/1\1/
s/_/0/g
减1,代码如下:
#!/bin/sed -f
: a
s/0\(_*\)$/_\1/
t a
s/1\(_*\)$/0\1/
s/2\(_*\)$/1\1/
s/3\(_*\)$/2\1/
s/4\(_*\)$/3\1/
s/5\(_*\)$/4\1/
s/6\(_*\)$/5\1/
s/7\(_*\)$/6\1/
s/8\(_*\)$/7\1/
s/9\(_*\)$/8\1/
s/_/9/g
s/^0//
s/^$/0/
二.sed中可直接使用的RE
* . ^ $ [ ] \ c
\w ( 相当于[A-Za-z_] ) \W ( 相当于[^A-Za-z_] )
sed中需转义使用的RE:
+ ? { } ( ) | < >
其他:
\d (d) \D (D) \s (s) \S (S)
匹配 单引号’ 用双引号
匹配 反引号` 用单引号
\b 匹配单词的前或后边界 ( 字符[^A-Za-z0-9_]均构成单词边界 )
\B 匹配单词的非边界 ( 字符[^A-Za-z0-9_]均构成单词边界 )
\< 匹配单词的位置前 ( 字符[^A-Za-z0-9_]均构成单词边界 )
\> 匹配单词的位置后 ( 字符[^A-Za-z0-9_]均构成单词边界 )
支持十进制,格式为“\d + 两位或三位十进制数”,如“\d065 或\d65 均代表字符 A ”
支持十六进制,格式为“\x + 两位十六进制数”,如“\x61 代表字符 A ”
支持八进制,格式为“\o + 两位或三位八进制数”,如“\o077 或\o77 均代表字符 ?,\o101代表字符 A ”
三.用sed删除由空格组成的空行
sed /^[[:space:]]*$/d
or
sed /^[[:blank:]]*$/d
四.字符串翻转
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' file
五.按关键字拼接行,如果某行以=开始,则合并到上一行并替代=为空格
sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'
六.显示匹配行的行号并输出匹配行的上行、匹配行、下行
sed -n -e '/regexpr/{=;x;1!p;g;$!N;p;D;}' -e h
七.替换每行第n(如果有的话)个匹配
sed "s/regexpr/anyword/${n}" filename
加1,代码如下:
: a
s/9\(_*\)$/_\1/
t a
s/^\(_*\)$/0\1/
s/8\(_*\)$/9\1/
s/7\(_*\)$/8\1/
s/6\(_*\)$/7\1/
s/5\(_*\)$/6\1/
s/4\(_*\)$/5\1/
s/3\(_*\)$/4\1/
s/2\(_*\)$/3\1/
s/1\(_*\)$/2\1/
s/0\(_*\)$/1\1/
s/_/0/g
减1,代码如下:
#!/bin/sed -f
: a
s/0\(_*\)$/_\1/
t a
s/1\(_*\)$/0\1/
s/2\(_*\)$/1\1/
s/3\(_*\)$/2\1/
s/4\(_*\)$/3\1/
s/5\(_*\)$/4\1/
s/6\(_*\)$/5\1/
s/7\(_*\)$/6\1/
s/8\(_*\)$/7\1/
s/9\(_*\)$/8\1/
s/_/9/g
s/^0//
s/^$/0/
二.sed中可直接使用的RE
* . ^ $ [ ] \ c
\w ( 相当于[A-Za-z_] ) \W ( 相当于[^A-Za-z_] )
sed中需转义使用的RE:
+ ? { } ( ) | < >
其他:
\d (d) \D (D) \s (s) \S (S)
匹配 单引号’ 用双引号
匹配 反引号` 用单引号
\b 匹配单词的前或后边界 ( 字符[^A-Za-z0-9_]均构成单词边界 )
\B 匹配单词的非边界 ( 字符[^A-Za-z0-9_]均构成单词边界 )
\< 匹配单词的位置前 ( 字符[^A-Za-z0-9_]均构成单词边界 )
\> 匹配单词的位置后 ( 字符[^A-Za-z0-9_]均构成单词边界 )
支持十进制,格式为“\d + 两位或三位十进制数”,如“\d065 或\d65 均代表字符 A ”
支持十六进制,格式为“\x + 两位十六进制数”,如“\x61 代表字符 A ”
支持八进制,格式为“\o + 两位或三位八进制数”,如“\o077 或\o77 均代表字符 ?,\o101代表字符 A ”
三.用sed删除由空格组成的空行
sed /^[[:space:]]*$/d
or
sed /^[[:blank:]]*$/d
四.字符串翻转
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' file
五.按关键字拼接行,如果某行以=开始,则合并到上一行并替代=为空格
sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'
六.显示匹配行的行号并输出匹配行的上行、匹配行、下行
sed -n -e '/regexpr/{=;x;1!p;g;$!N;p;D;}' -e h
七.替换每行第n(如果有的话)个匹配
sed "s/regexpr/anyword/${n}" filename
相关阅读 更多 +