广州总部电话:020-85564311
广州总部电话:020-85564311

广州网站建设-小程序商城开发-广州小程序开发-企业微信开发公司-网站建设高端品牌-优网科技

20年
互联网应用服务商
请输入搜索关键词
知识库 知识库

优网知识库

探索行业前沿,共享知识宝库

Linux命令大师课:sed命令的实战应用
发布日期:2025-04-18 17:37:41 浏览次数: 903 来源:LinuxPythonWorkshop


✅ linux150个基础命令(书签版)
✅linux安装教程


图片

01.sed 命令简介



sed(Stream Editor)是一种流编辑器,它通过读取输入流(文件或管道),按照指定的规则进行编辑操作,并将结果输出到标准输出。sed 的操作是基于行的,它可以对文本进行替换、删除、插入等多种操作。

基础命令格式

sed -n 'n'p filename

我们来拆解一下。

  • sed:这是命令的核心,告诉系统我们即将使用流编辑器。

  • -n:这个选项的作用是禁止 sed 默认的输出行为。通常情况下,sed 会将处理后的每一行都输出到屏幕上,但加上 -n 选项后,只有满足特定条件的行才会被输出。

  • 'n'p:这是 sed 的编辑指令。单引号内的 n 是一个数字,表示第几行;p 是打印的意思。所以,'n'p 的意思是打印第 n 行的内容。

  • filename:这是需要处理的文件名。

假设我们有一个名为 example.txt 的文件,内容如下:

第一行第二行第三行

如果我们执行命令 sed -n '2'p example.txt,那么输出结果将是:

第二行

这是因为我们指定打印第 2 行的内容。

如何使用sed删除行?

sed命令中,d是一个非常重要的指令,代表“删除”(delete)。使用sed删除行的基本格式是:

sed 'n'd filename

这里的n是你想要删除的行号filename是你要处理的文件名。

实例演示

假设我们有一个名为1.txt的文件,内容如下:

1234567781111111111111aaaaaaaaaabbbbbbbbbbbb

如果我们想要删除第一行,可以使用以下命令:

sed '1'd 1.txt

执行后,输出结果将是:

1111111111111aaaaaaaaaabbbbbbbbbbbb

第一行被成功删除了。

删除包含特定字符的行

sed不仅可以删除指定的行,还可以删除包含特定字符或模式的行。例如,如果我们想要删除包含“oo”的行,可以使用以下命令:

sed '/oo/'d 1.txt

这个命令会查找文件中所有包含“oo”的行,并将它们删除。

直接修改文件

如果你想要直接修改文件而不是仅仅输出到屏幕,可以使用-i选项。这会直接在原文件上进行修改。例如:

sed -i '/oo/'d 1.txt

执行后,1.txt文件中所有包含“oo”的行都会被删除。

图片
图片

02.sed命令替换文本



如何使用sed替换文本?

sed命令中,s是一个非常重要的指令,代表“替换”(substitute)。使用sed替换文本的基本格式是:

sed 's/old/new/g' filename
这里的old是你想要替换的文本,new是替换后的文本,g表示全局替换(即替换行中所有匹配的文本),filename是你要处理的文件名。实例演示假设我们有一个名为test.txt的文件,内容如下:roto:x:0:0:roto:roto:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin如果我们想要将文件中的“to”替换为“ot”,可以使用以下命令:sed 's/to/ot/g' test.txt执行后,输出结果将是:roto:x:0:0:roto:roto:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin可以看到,文件中的“to”都被替换为了“ot”。替换特定行的文本如果你只想替换特定行的文本,可以使用行号来指定。例如,如果我们只想替换第1行和第2行中的“to”为“ot”,可以使用以下命令:sed '1,2s/to/ot/g' test.txt执行后,输出结果将是:roto:x:0:0:roto:roto:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin可以看到,只有第1行和第2行中的“to”被替换为了“ot”。
图片


图片

03.sed 命令高级文本替换



我们将深入探索sed命令的高级用法——使用正则表达式进行文本替换。这在处理复杂的文本文件时非常有用,比如调整字段顺序、提取特定信息等。

如何使用sed进行高级替换?

sed命令中,s是一个非常重要的指令,代表“替换”(substitute)。使用sed进行高级替换的基本格式是:

sed 's/pattern/replacement/' filename

这里的pattern是匹配的正则表达式,replacement是替换后的内容,filename是你要处理的文件名。

实例演示

假设我们有一个名为test.txt的文件,内容如下:

root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

如果我们想要将文件中的字段顺序调整为用户名、家目录、shell,可以使用以下命令:

sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/' test.txt | head -n5

执行后,输出结果将是:

bash:x:0:0:root:/rootbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

解释输出

  • 第一行 root:x:0:0:root:/root:/bin/bash 被替换为 bash:x:0:0:root:/root

    • \3(bash)被放在最前面。

    • \2:x:0:0:)放在中间。

    • \1(root)被放在最后面。

  • 其他行没有匹配到rootbash,所以没有被替换,保持原样。

可以看到,字段顺序已经被成功调整。

命令解析

  1. sed命令sed是一个流编辑器,用于对文本进行过滤和转换。

  2. 替换指令's/\(root\)\(.*\)\(bash\)/\3\2\1/'sed的替换指令。

  • \3表示第三个分组的内容,即bash

  • \2表示第二个分组的内容,即.*匹配到的内容。

  • \1表示第一个分组的内容,即root

  • s表示替换(substitute)。

  • \(root\):第一个分组,匹配文本中的root。括号()表示这是一个分组,可以在替换时引用。

  • \(.*\):第二个分组,匹配任意字符(.)任意次数(*),即匹配rootbash之间的任意内容。

  • \(bash\):第三个分组,匹配文本中的bash

  • \3\2\1:替换后的内容。

  • 管道符号|表示将前一个命令的输出作为下一个命令的输入。

    • head -n5:输出前五行结果。

    这个命令通过使用sed的正则表达式替换功能,将每一行中rootbash之间的内容进行了重新排序。\1\2\3分别表示匹配到的分组内容,使得替换操作更加灵活和强大。


    优网科技,优秀企业首选的互联网供应服务商

    优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!

    优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。


    我要投稿

    姓名

    文章链接

    提交即表示你已阅读并同意《个人信息保护声明》

    专属顾问 专属顾问
    扫码咨询您的优网专属顾问!
    专属顾问
    马上咨询
    联系专属顾问
    联系专属顾问
    联系专属顾问
    扫一扫马上咨询
    扫一扫马上咨询

    扫一扫马上咨询

    和我们在线交谈!