1. 概念
sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
2. 语法
sed [选项参数] ‘command’ filename
选项参数
选项参数 | 功能 |
-e | 直接在指令列模式上进行sed的动作编辑。 |
-i | 直接编辑文件 |
命令功能
命令 | 功能描述 |
a | 新增,a的后面可以接字串,在下一行出现 |
d | 删除 |
s | 查找并替换 |
3. 示例
1. 将"18 19 20 21"插入到第二行
[root@localhost cut_sed_awk_sort]# cat sed.txt
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
[root@localhost cut_sed_awk_sort]# sed '2a 18 19 20 21' sed.txt
1 2 3 4
5 6 7 8
18 19 20 21
9 10 11 12
13 14 15 16
[root@localhost cut_sed_awk_sort]#
2. 删除文件中所有包含9的行(并不改变原文内容)
[root@localhost cut_sed_awk_sort]# sed '/9/d' sed.txt
1 2 3 4
5 6 7 8
13 14 15 16
[root@localhost cut_sed_awk_sort]# cat sed.txt
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
[root@localhost cut_sed_awk_sort]#
3. 将文件中的9替换成100
[root@localhost cut_sed_awk_sort]# sed 's/9/200/g' sed.txt
1 2 3 4
5 6 7 8
200 10 11 12
13 14 15 16
[root@localhost cut_sed_awk_sort]# cat sed.txt
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
[root@localhost cut_sed_awk_sort]#
4. 将文件中的第二行删除并将9替换成100
[root@localhost cut_sed_awk_sort]# sed -e '2d' -e 's/9/200/g' sed.txt
1 2 3 4
200 10 11 12
13 14 15 16
[root@localhost cut_sed_awk_sort]# cat sed.txt
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
[root@localhost cut_sed_awk_sort]#