sed
功能说明:sed是操作、过滤和转换文本内容的强大工具。常用功能包括对文件实现快速增删改查(增加、删除、修改、查询),其中查询的功能中最差用的两大功能是过滤指定字符串、取出指定行。
参数选项:
-n 取消默认的sed的输出,常与sed内置命令的p连用。
-i 直接修改文件内容,而不是输出到终端。如果不适用 -i 选项,则sed只是修改内存中的数据,并不会影响磁盘上的文件。
sed的内置命令字符
a 全拼append,表示追加文本,在指定行后添加一行或多行文本。
d 全拼delete,表示匹配行的文本。
i 全拼insert,表示插入文本,在指定行前添加一行或多行文本。
p 全拼print,表示打印匹配行的内容,通常p会与选项-n一起使用。
s/regexp/replacement/ 匹配regexp的内容,用replacement替换regexp匹配的内容,
regexp部分可以使用正则表达式,在replacement部分可以使用特殊字符 & 和 1-9 等匹配regexp部分的部分内容。
s/regexp/replacement/ 结尾常与g匹配做全局的替换。
在文件制定位置行后追加文件
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# sed '2a 106,tianjing,TJ' a.log
101,shanghai,SH
102,beijing,BJ
106,tianjing,TJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
在文件指定的行前插入文件
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# sed '2i 106,tianjing,TJ' a.log
101,shanghai,SH
106,tianjing,TJ
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
在指定行后最近多行文本
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# sed '2a 106,tianjing,TJ
107,nanjing,NJ' a.log
101,shanghai,SH
102,beijing,BJ
106,tianjing,TJ
107,nanjing,NJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
删除文件中一行指定的文本
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# sed '2d' a.log
101,shanghai,SH
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
删除文件中指定的多行文本
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# sed '2,5d' a.log
101,shanghai,SH
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
使用sed命令替换文本内容
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# sed 's#beijing#liuzhou#g' a.log
101,shanghai,SH
102,liuzhou,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
打印输出文件的指定行的内容
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# sed '2p' a.log
101,shanghai,SH
102,beijing,BJ
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ
[root@testdb ~]# sed -n '2p' a.log
102,beijing,BJ
[root@testdb ~]# sed -n '2,3p' a.log
102,beijing,BJ
103,guangzhou,GZ
[root@testdb ~]# cat a.log
101,shanghai,SH
102,beijing,BJ
103,guangzhou,GZ
104,shenzhen,SZ
105,hangzhou,HZ