linux三剑客之sed
1、sed命令
sed 参数 "定位+指令" 文本路径
注:不指定定位,默认处理全文
指令:
d:删除
p:打印
参数:
-e:允许多项编辑
-n:取消默认输出(不显示不匹配内容的行)
-i:就地编辑文本(编辑文本并保存)
-r:支持扩展正则表达式(必须要放在两个/中间)
-f:指定定位规则的文本(可以将多个,定位跟指令写入文本中)
2、案例
案例:
1、在文本中,打印第一行和第五行
[root@localhost ~]# sed -e '5p' -e "1p" 1.txt
2、在文本中,要求只打印第1,5,6三行
[root@localhost ~]# sed -n -e '5p' -e "1p" -e "6p" 1.txt
3、要求删除文件的第3行
[root@localhost ~]# sed -i '3d' 1.txt
4、删除/etc/fstab文件中所有的注释的行
[root@localhost ~]# sed -i -r "/^ *#|^$/d" /etc/fstab
5、删除1.txt的3行,打印第4行
[root@localhost ~]# sed -f 3.txt 1.txt
[root@localhost ~]# cat 3.txt
3d
4p
练习
练习1:要求将/etc/passwd文件复制到/root/1.txt中,然后删除当中包含/sbin/nologin的行
[root@localhost ~]# sed -i -r "/\/sbin\/nologin/d" 4.txt
[root@localhost ~]# cat 4.txt
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6: