前言
sed在linux中的用法是十分广泛的,学会使用sed是每一个shell脚本使用者的最有效的武器
一.常用选项
- -i:使用最为广泛的一个选项,使用-i之后会将修改保存至文件中,不加只是进行展示,不会做实际修改。
- -e:它告诉sed将下一个参数解释为一个sed指令,意思就是当需要过滤两个以上的条件时使用。
- -f:后跟保存了sed指令的文件。
- -n:只打印处理过的行。
二.编辑命令
a:向匹配行后面插入内容
i:向匹配行前面插入内容
c:更改匹配行的内容
d:删除匹配行内容
s:替换匹配的内容
p:打印匹配的内容,通常和-n配合使用
=:用来打印被匹配的行号
n:读取下一行,遇到n会自动跳到下一行
r,w:读和写编辑命令
三.操作实例
初始文件
a:后面插入
1.给第三行末尾插入hello
2.给字母h(这里可以匹配单词,也可以匹配字母)的下一行插入hello
3.给最后一行末尾插入woaidenglun,并且保存至文件
i:前面插入
1.给第一行之前插入hello
可以看到用法基本跟a差不多,只是插入位置有区别,在这就不继续列举
c:更改
1.更改第一行为abcdef
2.更改456一行为denglunshauia
3.更改最后一行为denglunzuishaui
d:删除
1.删除第二行
2.删除从第一行起,之后每隔两行就删除一行
3.删除1到2行
4.删除除了1~2行之外的行
5.删除匹配denglun的行
6.删除匹配456的行到最后一行
7.删除匹配456的行以及后面两行
8.删除空行
9.删除不匹配abc或者456的行
10.删除1~2行中,匹配abc的行
s:替换文件中的内容
这个和c的区别是c是更改匹配到的行,而s只是更改匹配到的内容
1.将文件中的所有a替换成888,默认值是只替换每行第一个
2.将文件中所有a都替换成888
2.将每行中第二个匹配的换成888
3.匹配有4的行,替换匹配行中5后的所有内容为my
4.替换每行的最后两个字符为my
5.将文件中以4开头的行替换为空行,即为注释的行
p:打印文件中的行
1.打印文件第三行的内容
2.跳行打印(第二行开始,每间隔两行打印一行)
3.逐行读取文件,打印匹配45的行
4.逐行读取文件,打印从匹配45的行到第二行,同时也打印后面所有匹配45的行
5.打印第一行到匹配45的行(第一次匹配上的)
6.打印45匹配的行以及下两行
7.打印匹配内容a到匹配内容h的行
8.打印文件最后一行的行号(和wc-l类似)
!
9.打印匹配4的行号和内容
r:从一个文件读内容到另外一个文件(每一行都读入内容)
1.从rui中读到xuejiarui中
2.从第三行开始读
3.在匹配456的行之后插入文件rui的内容,多行匹配都会插入