Linux 常用命令 sed

目录

一、语法

1.1 常用选项

1.2 常用命令

1.3 命令原理

二、实例

2.1 新增内容---命令 a

2.2 取代内容---命令 c

2.3 删除内容---删除指定的行

2.4 插入内容---命令 i

2.5 取代内容---命令 s

扫描二维码关注公众号,回复: 12452867 查看本文章

三、总结


Linux sed 命令是利用脚本按行来处理文本文件,是脚本处理中经常使用的一个命令,与 awk、grep 合称为 Linux 三剑客,下面将结合实例进行说明。

一、语法

sed [选项] [脚本命令] [文件]...

1.1 常用选项

-e script, --expression=script :以选项中指定的 script 来处理输入的内容;

-f script-file, --file=script-file:以选项中指定的 script-file 来处理输入的内容;

1.2 常用命令

a :新增内容,在指定行新增内容 text;

c :取代内容,使用 text 取代指定行的内容;

d :删除内容,删除指定行;

i :插入内容,在指定行插入内容 text;

s : 替换内容,可以替换指定内容;

样例:/etc/passwd 文件的前15行

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

1.3 命令原理

sed 将输入数据按行依次进行处理,每次处理一行,可以分为三步:

1. 将当前处理行的副本存储到临时缓冲区(称为“模式空间”);

2. 通过 sed 命令处理当前缓冲区中的数据;

3. 处理完数据后,默认将数据输出到终端,然后接着处理下一行,一直处理完所有数据。

默认情况下是不修改源数据的。

二、实例

2.1 新增内容---命令 a

 sed '4a addition some text' passwd

[root@localhost ~]# sed '4a addition some text' passwd
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
addition some text
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
[root@localhost ~]#

在上面的例子中,4a 代表在第四行后插入内容,后面跟的文本为输入内容,passwd为处理输入的文件。 

2.2 取代内容---命令 c

sed '2c addition some text' passwd

[root@localhost ~]# sed '2c addition some text' passwd
root:x:0:0:root:/root:/bin/bash
addition some text
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
[root@localhost ~]#

在上述例子中,2c代表替换第2行的内容,后面跟的内容为将要替换的内容。 

2.3 删除内容---删除指定的行

sed '2d' passwd

[root@localhost ~]# sed '2d' passwd
root:x:0:0:root:/root:/bin/bash
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
[root@localhost ~]#

 sed '2,5d' passwd

[root@localhost ~]# sed '2,5d' passwd
root:x:0:0:root:/root:/bin/bash
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
[root@localhost ~]#

 sed '/^bin/d' passwd

[root@localhost ~]# sed '/^bin/d' passwd
root:x:0:0:root:/root:/bin/bash
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
[root@localhost ~]#

在上述三个例子中,可以通过指定某一行进行删除,也可以指定一个区间进行删除,还可以指定具体内容进行删除。 

2.4 插入内容---命令 i

sed '1i addition some text' passwd

[root@localhost ~]# sed '1i addition some text' passwd
addition some text
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
[root@localhost ~]#

插入内容和新增内容有所不同,插入是在指定行的前面插入,而新增内容为在指定行的后面插入。 

2.5 取代内容---命令 s

sed 's/root/ROOT/g' passwd

[root@localhost ~]# sed 's/root/ROOT/g' passwd
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
[root@localhost ~]#

在上述列子中,可以通过命令替换指定内容,和 vim 中的替换一样。 

三、总结

上面只是以实例的形式列举了 sed 常用的用法,还有更多,更深入的内容,有时间会再进行介绍。

 

猜你喜欢

转载自blog.csdn.net/u011074149/article/details/110296542