Linux 命令 | 常用命令 sed

举报
Linux猿 发表于 2021/08/05 01:19:18 2021/08/05
【摘要】 目录 一、语法 1.1 常用选项 1.2 常用命令 1.3 命令原理 二、实例 2.1 新增内容---命令 a 2.2 取代内容---命令 c 2.3 删除内容---删除指定的行 2.4 插入内容---命令 i 2.5 取代内容---命令 s 三、总结 Linux sed 命令是利用脚本按行来处理文本文件,是脚本处理中经常使用的一个命令,与 awk、...

目录

一、语法

1.1 常用选项

1.2 常用命令

1.3 命令原理

二、实例

2.1 新增内容---命令 a

2.2 取代内容---命令 c

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

2.4 插入内容---命令 i

2.5 取代内容---命令 s

三、总结


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行


  
  1. root:x:0:0:root:/root:/bin/bash
  2. bin:x:1:1:bin:/bin:/sbin/nologin
  3. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  4. adm:x:3:4:adm:/var/adm:/sbin/nologin
  5. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  6. sync:x:5:0:sync:/sbin:/bin/sync
  7. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  8. halt:x:7:0:halt:/sbin:/sbin/halt
  9. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  10. operator:x:11:0:operator:/root:/sbin/nologin

1.3 命令原理

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

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

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

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

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

二、实例

2.1 新增内容---命令 a

 sed '4a addition some text' passwd


  
  1. [root@localhost ~]# sed '4a addition some text' passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. addition some text
  7. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  8. sync:x:5:0:sync:/sbin:/bin/sync
  9. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  10. halt:x:7:0:halt:/sbin:/sbin/halt
  11. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  12. operator:x:11:0:operator:/root:/sbin/nologin
  13. [root@localhost ~]#

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

2.2 取代内容---命令 c

sed '2c addition some text' passwd


  
  1. [root@localhost ~]# sed '2c addition some text' passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. addition some text
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  9. halt:x:7:0:halt:/sbin:/sbin/halt
  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  11. operator:x:11:0:operator:/root:/sbin/nologin
  12. [root@localhost ~]#

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

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

sed '2d' passwd


  
  1. [root@localhost ~]# sed '2d' passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  4. adm:x:3:4:adm:/var/adm:/sbin/nologin
  5. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  6. sync:x:5:0:sync:/sbin:/bin/sync
  7. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  8. halt:x:7:0:halt:/sbin:/sbin/halt
  9. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  10. operator:x:11:0:operator:/root:/sbin/nologin
  11. [root@localhost ~]#

 sed '2,5d' passwd


  
  1. [root@localhost ~]# sed '2,5d' passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. sync:x:5:0:sync:/sbin:/bin/sync
  4. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  5. halt:x:7:0:halt:/sbin:/sbin/halt
  6. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  7. operator:x:11:0:operator:/root:/sbin/nologin
  8. [root@localhost ~]#

 sed '/^bin/d' passwd


  
  1. [root@localhost ~]# sed '/^bin/d' passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  4. adm:x:3:4:adm:/var/adm:/sbin/nologin
  5. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  6. sync:x:5:0:sync:/sbin:/bin/sync
  7. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  8. halt:x:7:0:halt:/sbin:/sbin/halt
  9. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  10. operator:x:11:0:operator:/root:/sbin/nologin
  11. [root@localhost ~]#

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

2.4 插入内容---命令 i

sed '1i addition some text' passwd


  
  1. [root@localhost ~]# sed '1i addition some text' passwd
  2. addition some text
  3. root:x:0:0:root:/root:/bin/bash
  4. bin:x:1:1:bin:/bin:/sbin/nologin
  5. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  6. adm:x:3:4:adm:/var/adm:/sbin/nologin
  7. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  8. sync:x:5:0:sync:/sbin:/bin/sync
  9. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  10. halt:x:7:0:halt:/sbin:/sbin/halt
  11. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  12. operator:x:11:0:operator:/root:/sbin/nologin
  13. [root@localhost ~]#

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

2.5 取代内容---命令 s

sed 's/root/ROOT/g' passwd


  
  1. [root@localhost ~]# sed 's/root/ROOT/g' passwd
  2. ROOT:x:0:0:ROOT:/ROOT:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  9. halt:x:7:0:halt:/sbin:/sbin/halt
  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  11. operator:x:11:0:operator:/ROOT:/sbin/nologin
  12. [root@localhost ~]#

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

三、总结

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

 

文章来源: blog.csdn.net,作者:Linux猿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nyist_zxp/article/details/110296542

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。