码迷,mamicode.com
首页 > 其他好文 > 详细

正则扩展(1)

时间:2018-01-19 11:39:53      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:修改文件   amp   字符   之间   空间   个数   test   root   数字   

1.打印文件中特定的某行到某行之间的内容
(1)文件内容如下

[root@weix-01 ~]# cat aa.txt
erti
ffsa
**
$%
[abcd]
123
456
789
[ttl]
af
**
fgfg
[root@weix-01 ~]# sed -n ‘/abcd/,/ttl/p‘ aa.txt      #这种方式适用于模糊匹配
[abcd]
123
456
789
[ttl]
[root@weix-01 ~]# sed -n ‘/\[abcd]/,/\[ttl]/p‘ aa.txt     #此种为精确匹配
[abcd]
123
456
789
[ttl]

(2)当修改文件内容如下时,上面第一种方式就不适用了

[root@weix-01 ~]# cat aa.txt
erti
ffsa
**
abcd
$%
[abcd]
123
456
789
[ttl]
af
**
fgfg
[root@weix-01 ~]# sed -n ‘/abcd/,/ttl/p‘ aa.txt
abcd
$%
[abcd]
123
456
789
[ttl]
[root@weix-01 ~]# sed -n ‘/\[abcd]/,/\[ttl]/p‘ aa.txt
[abcd]
123
456
789
[ttl]

2.sed 如何转换大小写字母:sed中,使用\u表示大写,\l表示小写
(1)将文件每个单词第一个小写字母变大写

sed ‘s/\b[a-z]/\u&/g‘ filename
[root@weix-01 ~]# sed ‘s/\b[a-z]/\u&/g‘ aa.txt
Erti
Ffsa
**
Abcd
$%
[Abcd]
123
456
789
[Ttl]
Af
**
Fgfg

(2)把所有小写变大写:

sed ‘s/[a-z]/\u&/g‘ filename
[root@weix-01 ~]# sed ‘s/[a-z]/\u&/g‘ aa.txt
ERTI
FFSA
**
ABCD
$%
[ABCD]
123
456
789
[TTL]
AF
**
FGFG

(3)大写变小写:

sed ‘s/[A-Z]/\l&/g‘ filename
[root@weix-01 ~]# sed ‘s/[A-Z]/\I&/g‘ aa.txt
erti
ffsa
**
abcd
$%
[abcd]
123
456
789
[ttl]
af
**
fgfg

3.sed在文件中某一行最后添加一个数字

[root@weix-01 ~]# sed ‘s/\(^a.*\)/\1 12/‘ aa.txt
erti
ffsa
**
abcd 12
$%
[abcd]
123
456
789
[ttl]
af 12
**
fgfg

4.删除某关键字的下一行到最后一行
定义一个标签a,匹配c,然后N把下一行加到模式空间里,匹配最后一行时,才退出标签循环,然后命令d,把这个模式空间里的内容全部清除。

[root@weix-01 ~]# vi test
[root@weix-01 ~]# sed ‘/c/{p;:a;N;$!ba;d}‘ test
a
b
c
[root@weix-01 ~]# cat test
a
b
c
d
e
f

5.打印1到100行包含某个字符串的行

sed  -n ‘1,100{/abc/p}‘  1.txt
[root@weix-01 ~]# sed  -n ‘1,100{/abc/p}‘  aa.txt
abcd
[abcd]
[root@weix-01 ~]# cat aa.txt
erti
ffsa
**
abcd
$%
[abcd]
fgfg

正则扩展(1)

标签:修改文件   amp   字符   之间   空间   个数   test   root   数字   

原文地址:http://blog.51cto.com/13517254/2062682

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!