目录
前言
总结了一点sed的基本使用方法,包括对文件的查看、修改、增加、删除。
一、sed是什么?
sed被称为流编辑器(stream editor),可以根据命令来处理数据流中的数据。
二、使用方法
1.命令格式
sed options script file
2.常用选项
选项 | 描述 |
-e script |
处理输入时,将script中指定的命令添加到已有命令中 |
-f file | 处理输入时,将file中指定的命令添加到已有命令 |
-n | 不产生命令输出,使用print命令来完成输出 |
-i | 修改源文件 |
3.示例
文件准备
[root@centos ~]# cat a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
4.查看内容
4.1查看文件全部内容
[root@centos ~]# sed '' b.txt
[root@centos ~]# sed -n 'p' a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
4.2查看文件第5行内容
[root@centos ~]# sed -n '5p' a.txt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
4.3查看2-4行内容
[root@centos ~]# sed -n '2,4p' a.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
4.4查看最后一行内容
[root@centos ~]# sed -n '$p' a.txt
operator:x:11:0:operator:/root:/sbin/nologin
4.5去掉文件中以#和空格开头的行
[root@centos ~]# cat b.txt
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
[root@centos ~]# sed -r '/^#|^$/d' b.txt
worker_processes 1;
events {
5.增加内容
5.1在文件最后一行下增加内容
[root@centos ~]# sed '$ahello' a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
hello
5.2在文件第一行增加内容
[root@centos ~]# sed '1ihello' a.txt
hello
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
5.3在文件第3行下面增加内容
[root@centos ~]# sed '3ahello' a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
hello
adm:x:3:4:adm:/var/adm:/sbin/nologin
6.删除文件内容
6.1删除文件第一行
[root@centos ~]# sed '1d' a.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6.2删除文件最后一行
[root@centos ~]# sed '$d' a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
6.2删除文件3-6行
[root@centos ~]# sed '3,6d' a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
6.3删除文件中第1行,并在删除前备份
[root@centos ~]# sed -i.bak '1 d' a.txt
[root@centos ~]# ll
total 8684
-rw-r--r-- 1 root root 353 Apr 16 08:46 a.txt
-rw-r--r-- 1 root root 385 Apr 16 08:04 a.txt.bak
7.修改文件内容
对文件内容搜索并替换,修改原文件需要加-i
7.1将文件中所有的root改为hello
[root@centos ~]# sed -n 's/root/hello/pg' a.txt
hello:x:0:0:hello:/hello:/bin/bash
operator:x:11:0:operator:/hello:/sbin/nologin
7.2将文件中1-3行内容前加上#号
[root@centos ~]# sed -n '1,3s/^/#/p' a.txt
#root:x:0:0:root:/root:/bin/bash
#bin:x:1:1:bin:/bin:/sbin/nologin
#daemon:x:2:2:daemon:/sbin:/sbin/nologin
7.3将文件第3行修改为hello
[root@centos ~]# sed '3 c\hello\' a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
hello
7.4将第2行的第一个daemon修改为hello
[root@centos ~]# sed '2 s/daemon/hello/' a.txt
bin:x:1:1:bin:/bin:/sbin/nologin
hello:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
四、总结
以上就是今天要分享的内容,仅仅简单介绍了sed的使用,希望可以帮助到有需要的人,更多内容后续再补充,如果你有意见或建议,欢迎在评论区发表评论。
版权声明:本文为m0_60169980原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。