1. https://zhuanlan.zhihu.com/p/80212245

sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用。可用于删除或移动与给定模式匹配的特定行。
-- Magesh Maruthamuthu(作者)

Sed 代表 流编辑器(Stream Editor),常用于 Linux 中基本的文本处理。sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用。可用于删除或移动与给定模式匹配的特定行。

它还可以删除文件中的特定行,它能够从文件中删除表达式,文件可以通过指定分隔符(例如逗号、制表符或空格)进行标识。

本文列出了 15 个使用范例,它们可以帮助你掌握 sed 命令。

如果你能理解并且记住这些命令,在你需要使用 sed 时,这些命令就能派上用场,帮你节约很多时间。

注意:为了方便演示,我在执行 sed 命令时,不使用 -i 选项(因为这个选项会直接修改文件内容),被移除了行的文件内容将打印到 Linux 终端。

但是,如果你想在实际环境中从源文件中删除行,请在 sed 命令中使用 -i 选项。

演示之前,我创建了 sed-demo.txt 文件,并添加了以下内容和相应行号以便更好地理解。

  1. # cat sed-demo.txt
  2. 1 Linux Operating System
  3. 2 Unix Operating System
  4. 3 RHEL
  5. 4 Red Hat
  6. 5 Fedora
  7. 6 Arch Linux
  8. 7 CentOS
  9. 8 Debian
  10. 9 Ubuntu
  11. 10 openSUSE

1) 如何删除文件的第一行?

使用以下语法删除文件首行。

N 表示文件中的第 N 行,d 选项在 sed 命令中用于删除一行。

语法:

  1. sed 'Nd' file

使用以下 sed 命令删除 sed-demo.txt 中的第一行。

  1. # sed '1d' sed-demo.txt
  2. 2 Unix Operating System
  3. 3 RHEL
  4. 4 Red Hat
  5. 5 Fedora
  6. 6 Arch Linux
  7. 7 CentOS
  8. 8 Debian
  9. 9 Ubuntu
  10. 10 openSUSE

2) 如何删除文件的最后一行?

使用以下语法删除文件最后一行。

$ 符号表示文件的最后一行。

使用以下 sed 命令删除 sed-demo.txt 中的最后一行。

  1. # sed '$d' sed-demo.txt
  2. 1 Linux Operating System
  3. 2 Unix Operating System
  4. 3 RHEL
  5. 4 Red Hat
  6. 5 Fedora
  7. 6 Arch Linux
  8. 7 CentOS
  9. 8 Debian
  10. 9 Ubuntu

3) 如何删除指定行?

使用以下 sed 命令删除 sed-demo.txt 中的第 3 行。

  1. # sed '3d' sed-demo.txt
  2. 1 Linux Operating System
  3. 2 Unix Operating System
  4. 4 Red Hat
  5. 5 Fedora
  6. 6 Arch Linux
  7. 7 CentOS
  8. 8 Debian
  9. 9 Ubuntu
  10. 10 openSUSE

4) 如何删除指定范围内的行?

使用以下 sed 命令删除 sed-demo.txt 中的第 5 到 7 行。

  1. # sed '5,7d' sed-demo.txt
  2. 1 Linux Operating System
  3. 2 Unix Operating System
  4. 3 RHEL
  5. 4 Red Hat
  6. 8 Debian
  7. 9 Ubuntu
  8. 10 openSUSE

5) 如何删除多行内容?

sed 命令能够删除给定行的集合。

本例中,下面的 sed 命令删除了第 1 行、第 5 行、第 9 行和最后一行。

  1. # sed '1d;5d;9d;$d' sed-demo.txt
  2. 2 Unix Operating System
  3. 3 RHEL
  4. 4 Red Hat
  5. 6 Arch Linux
  6. 7 CentOS
  7. 8 Debian

5a) 如何删除指定范围以外的行?

使用以下 sed 命令删除 sed-demo.txt 中第 3 到 6 行范围以外的所有行。

  1. # sed '3,6!d' sed-demo.txt
  2. 3 RHEL
  3. 4 Red Hat
  4. 5 Fedora
  5. 6 Arch Linux

6) 如何删除空行?

使用以下 sed 命令删除 sed-demo.txt 中的空行。

  1. # sed '/^$/d' sed-demo.txt
  2. 1 Linux Operating System
  3. 2 Unix Operating System
  4. 3 RHEL
  5. 4 Red Hat
  6. 5 Fedora
  7. 6 Arch Linux
  8. 7 CentOS
  9. 8 Debian
  10. 9 Ubuntu
  11. 10 openSUSE

7) 如何删除包含某个模式的行?

使用以下 sed 命令删除 sed-demo.txt 中匹配到 System 模式的行。

  1. # sed '/System/d' sed-demo.txt
  2. 3 RHEL
  3. 4 Red Hat
  4. 5 Fedora
  5. 6 Arch Linux
  6. 7 CentOS
  7. 8 Debian
  8. 9 Ubuntu
  9. 10 openSUSE

8) 如何删除包含字符串集合中某个字符串的行?

使用以下 sed 命令删除 sed-demo.txt 中匹配到 System 或 Linux 表达式的行。

  1. # sed '/System\|Linux/d' sed-demo.txt
  2. 3 RHEL
  3. 4 Red Hat
  4. 5 Fedora
  5. 7 CentOS
  6. 8 Debian
  7. 9 Ubuntu
  8. 10 openSUSE

9) 如何删除以指定字符开头的行?

为了测试,我创建了 sed-demo-1.txt 文件,并添加了以下内容。

  1. # cat sed-demo-1.txt
  2. Linux Operating System
  3. Unix Operating System
  4. RHEL
  5. Red Hat
  6. Fedora
  7. debian
  8. ubuntu
  9. Arch Linux - 1
  10. 2 - Manjaro
  11. 3 4 5 6

使用以下 sed 命令删除以 R 字符开头的所有行。

  1. # sed '/^R/d' sed-demo-1.txt
  2. Linux Operating System
  3. Unix Operating System
  4. Fedora
  5. debian
  6. ubuntu
  7. Arch Linux - 1
  8. 2 - Manjaro
  9. 3 4 5 6

使用以下 sed 命令删除 R 或者 F 字符开头的所有行。

  1. # sed '/^[RF]/d' sed-demo-1.txt
  2. Linux Operating System
  3. Unix Operating System
  4. debian
  5. ubuntu
  6. Arch Linux - 1
  7. 2 - Manjaro
  8. 3 4 5 6

10) 如何删除以指定字符结尾的行?

使用以下 sed 命令删除 m 字符结尾的所有行。

  1. # sed '/m$/d' sed-demo.txt
  2. 3 RHEL
  3. 4 Red Hat
  4. 5 Fedora
  5. 6 Arch Linux
  6. 7 CentOS
  7. 8 Debian
  8. 9 Ubuntu
  9. 10 openSUSE

使用以下 sed 命令删除 x 或者 m 字符结尾的所有行。

  1. # sed '/[xm]$/d' sed-demo.txt
  2. 3 RHEL
  3. 4 Red Hat
  4. 5 Fedora
  5. 7 CentOS
  6. 8 Debian
  7. 9 Ubuntu
  8. 10 openSUSE

11) 如何删除所有大写字母开头的行?

使用以下 sed 命令删除所有大写字母开头的行。

  1. # sed '/^[A-Z]/d' sed-demo-1.txt
  2. debian
  3. ubuntu
  4. 2 - Manjaro
  5. 3 4 5 6

12) 如何删除指定范围内匹配模式的行?

使用以下 sed 命令删除第 1 到 6 行中包含 Linux 表达式的行。

  1. # sed '1,6{/Linux/d;}' sed-demo.txt
  2. 2 Unix Operating System
  3. 3 RHEL
  4. 4 Red Hat
  5. 5 Fedora
  6. 7 CentOS
  7. 8 Debian
  8. 9 Ubuntu
  9. 10 openSUSE

13) 如何删除匹配模式的行及其下一行?

使用以下 sed 命令删除包含 System 表达式的行以及它的下一行。

  1. # sed '/System/{N;d;}' sed-demo.txt
  2. 3 RHEL
  3. 4 Red Hat
  4. 5 Fedora
  5. 6 Arch Linux
  6. 7 CentOS
  7. 8 Debian
  8. 9 Ubuntu
  9. 10 openSUSE

14) 如何删除包含数字的行?

使用以下 sed 命令删除所有包含数字的行。

  1. # sed '/[0-9]/d' sed-demo-1.txt
  2. Linux Operating System
  3. Unix Operating System
  4. RHEL
  5. Red Hat
  6. Fedora
  7. debian
  8. ubuntu

使用以下 sed 命令删除所有以数字开头的行。

  1. # sed '/^[0-9]/d' sed-demo-1.txt
  2. Linux Operating System
  3. Unix Operating System
  4. RHEL
  5. Red Hat
  6. Fedora
  7. debian
  8. ubuntu
  9. Arch Linux - 1

使用以下 sed 命令删除所有以数字结尾的行。

  1. # sed '/[0-9]$/d' sed-demo-1.txt
  2. Linux Operating System
  3. Unix Operating System
  4. RHEL
  5. Red Hat
  6. Fedora
  7. debian
  8. ubuntu
  9. 2 - Manjaro

15) 如何删除包含字母的行?

使用以下 sed 命令删除所有包含字母的行。

  1. # sed '/[A-Za-z]/d' sed-demo-1.txt
  2. 3 4 5 6

[转帖]如何使用 sed 命令删除文件中的行的更多相关文章

  1. 【Shell】使用sed命令替换文件中的某一行

    原始文件内容 -bash-3.2# cat configTest.xml <?xml version="1.0" encoding="UTF-8"?> ...

  2. 使用sed命令向文件中追加可变字符串

    1.如何向文件追加可变字符串,有如下两种方法 sed -i '1a '$s'' filename sed -i "1a $s" filename 注意: 以上命令是假定向文件fil ...

  3. linux命令读取文件中特定行

    1.如果你只想看文件的前5行,可以使用head命令, 如: head -5 /etc/passwd 2.如果你想查看文件的后10行,可以使用tail命令, 如: tail -10 /etc/passw ...

  4. python 删除文件中指定行

    代码适用情况:xml文件,循环出现某几行,根据这几行中的某个字段删掉这几行这段代码的作用删除jenkins中config.xml中在自动生成pipline报错的时的回滚 start = '<se ...

  5. Linux下Sed命令替换文件中的所有IP

    命令: sed -ri 's/([0-9]{1,3}\.){3}[0-9]{1,3}/localhost/g' es_create_index.sh 如图:

  6. 运用sed命令高效地删除文件的特定行

    运用 sed 命令高效地删除文件的特定行 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的.但是 ...

  7. sed命令针对文件操作具体解释

    Linux的简单shell脚本中改动文件操作 1.Sed简单介绍 sed 是一种在线编辑器,它一次处理一行内容.处理时.把当前处理的行存储在暂时缓冲区中,称为"模式空间"(patt ...

  8. sed命令替换文件内容

    reference: https://www.cnblogs.com/starof/p/4181985.html 抓取目录名并修改 ls | grep "XXX" > 1.t ...

  9. linux 下用find命令查找文件,rm命令删除文件

    linux 下用find命令查找文件,rm命令删除文件. 删除指定目录下指定文件find 要查找的目录名 -name .svn |xargs rm -rf 删除指定名称的文件或文件夹: find -t ...

  10. linux命令截取文件最后n行(所有命令)

    linux命令截取文件最后n行(所有命令) tail -n a.txt > b.txt 联想:系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) una ...

随机推荐

  1. 中秋佳节,程序员教你AI三步成诗,秒变“李白”

    摘要:举杯邀明月,用技术来附庸风雅. 中秋佳节来临之际,你是否开始思念远方的亲朋好友,想为他们送上祝福?又或是与家人团圆赏月之时,希望借一段风雅诗词抒情达意? 华为云的开发者们教你一招,来个技术风的A ...

  2. 实例解析丨一文搞定GaussDB CM服务异常

    摘要:本文主要为大家带来如何处理GaussDB CM服务异常问题. 本文分享自华为云社区<[实例状态]GaussDB CM服务异常>,作者:酷哥. 首先确认是否是虚拟机.网络故障,底层故障 ...

  3. ModelBox姿态匹配:抖抖手动动脚勤做深呼吸

    摘要:本案例使用Windows版本的ModelBox SDK进行二次开发,主要是针对姿态匹配案例开发实践. 本文分享自华为云社区<姿态匹配:抖抖手动动脚勤做深呼吸>,作者:吴小鱼. 在之前 ...

  4. 云图说|华为云自研云数据库GaussDB NoSQL,兼容多款NoSQL接口的数据库服务

    摘要:云数据库GaussDB NoSQL是一款基于计算存储分离架构的分布式多模NoSQL数据库服务,兼容多款nosql接口,在灵活弹性.快速扩展方面做到了极致. 本文分享自华为云社区<云图说|华 ...

  5. App Store上架流程/苹果app发布流程

    第一步:拥有自己的苹果开发者账号: 开发账号分为两类:99美元(发布App Store用的,也就是上架苹果商店用这个):299美元(企业授信证书,不用上架appstore 亦可使用.弊端:证书容易被封 ...

  6. IDEA画图神器 PlantUML

    PlantUML 是一款开源的UML图绘制工具,支持通过文本来生成图形,使用起来非常高效.可以支持时序图.类图.对象图.活动图.思维导图等图形的绘制. 下面使用PlantUML来绘制一张流程图,可以实 ...

  7. Nacos 1.2.1 集群搭建(三) Nginx 配置 集群

    配置 Nginx 可以把.conf 文件拉到本地,配置好再传上去 #gzip on; upstream cluster{ server 192.168.0.113:8848; server 192.1 ...

  8. Django增删改查

    增删改查.配置对应路由,函数,视图.报错注意看控制台. 添加取到前台传来的参数,后端给予验证.入库 编辑,取到当前编辑得id,在后台查到对应数据.重新update 删除,取到当前点击ID,后台dele ...

  9. Python中节省内存的方法之一:__slots__属性

    Python是一门动态语言,可以在运行过程中,修改实例的属性和增删方法.任何实例都包含一个字典__dict__,该字典保存了实例所有的属性和方法.Python也通过这个字典可以将任意属性绑定到实例上. ...

  10. (error) MOVED 12706 10.176.246.204:9736

    使用redis-cli连接上redis后,执行get命令报错: (error) MOVED 12706 10.176.246.204:9736 百度到原因是未以集群模式连接,在连接时加上-c参数就可以 ...