一。删除文本
d操作用于删除文本的特定行,会删除指定的所有内容,则使用该命令必须特别小心,若忘记指定处理行的话会删除所有的内容,也不会有任何的输出
注意:sed -i 'd' 文件名:会全部清空文本内容,要谨慎处理
案例一:删除固定范围的行
案例二:删除空白行
案例三:删除整行
注释:对于root行会进行整个删除,不仅仅是这一个词
二。替换文本:
使用a动作在指定行的下一行追加一行,使用i动作在指定行前插入一行,两者格式相同
格式:sed '行范围a(或者i)\新文本' 文件名
案例一:在myhost的末尾添加一行内容
sed -i '$a\192.168.1.151 www.myhost.com' myhost
案例二:在myhost的第二行前添加一行内容
sed -i '2i\192.160.1.150 www.myhost.com' myhost
注意:对于插入,不能对于空文件进行处理,会无效
三:综合案例:
1.打印test.txt的3-10行内容
sed -n '3,10p' test.txt
2.打印test.txt中包括‘root’行的内容
sed -n '/root/p' test.txt
3.删除test.txt的15行及以后面所有行
sed '15,$d' test.txt
4.删除test.txt中包括bash的行
sed '/bash/d' test.txt
5.替换test.txt中的root为toor
sed -n 's/root/toor/gp' test.txt
6.替换test.txt中的'/sbin/nologin为/bin/login'
sed -n 's#/sbin/nologin#/bin/login#gp' test.txt
7.删除test.txt中5-10行所有的所有数字
sed -n '5,10s/[[:digit:]]//gp' test.txt
8.删除test.txt中所有特殊字符(除了数字以及大小写子字母)
sed -n 's/[^(a-z)(A-Z)(0-9)]//gp' test.txt
9.在test.txt的20行到末尾最前面加aaa
sed -n '20,$s/^/aaa&/p' test.txt
10.在test.txt所有行首添加#注释
sed -n 's/^/#&/p' test.txtsed
11.检索5到关键字sshd的内容
sed -n '5,/sshd/p' test.txt
12.1-5行的第一个单词大写
sed -n '1,5s/^[a-z]/\u&/p' test.txt
13.在第五行前插入一个空白行
sed -n '5s/^/\n/p' test.txt
四。高级案例:
1.在linux系统中,有一个文本文件nowcoder.txt,需要将文本中的手机号码进行处理,将书记号码转换为xxx-xxxx-xxxx的格式
创建nowcoder.txt文本,并且写入数据
注释:-r:高级替换,将号码以()进行分组,再以\1-,\2-,\3表示每一组的原始内容,-表示原样输出