Linux sed命令增删改查的使用

  • Post author:
  • Post category:linux



目录


前言


一、sed是什么?


二、使用方法


1.命令格式


2.常用选项


3.示例


4.查看内容


4.1查看文件全部内容


4.2查看文件第5行内容


4.3查看2-4行内容


4.4查看最后一行内容


4.5去掉文件中以#和空格开头的行


5.增加内容


5.1在文件最后一行下增加内容


5.2在文件第一行增加内容


5.3在文件第3行下面增加内容


6.删除文件内容


6.1删除文件第一行


6.2删除文件最后一行


6.2删除文件3-6行


6.3删除文件中第1行,并在删除前备份


7.修改文件内容


7.1将文件中所有的root改为hello


7.2将文件中1-3行内容前加上#号


7.3将文件第3行修改为hello


7.4将第2行的第一个daemon修改为hello


四、总结




前言

总结了一点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 版权协议,转载请附上原文出处链接和本声明。