[转帖]如何使用 sed 命令删除文件中的行
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 文件,并添加了以下内容和相应行号以便更好地理解。
# cat sed-demo.txt
1 Linux Operating System
2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
1) 如何删除文件的第一行?
使用以下语法删除文件首行。
N 表示文件中的第 N 行,d 选项在 sed 命令中用于删除一行。
语法:
sed 'Nd' file
使用以下 sed 命令删除 sed-demo.txt 中的第一行。
# sed '1d' sed-demo.txt
2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
2) 如何删除文件的最后一行?
使用以下语法删除文件最后一行。
$ 符号表示文件的最后一行。
使用以下 sed 命令删除 sed-demo.txt 中的最后一行。
# sed '$d' sed-demo.txt
1 Linux Operating System
2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
3) 如何删除指定行?
使用以下 sed 命令删除 sed-demo.txt 中的第 3 行。
# sed '3d' sed-demo.txt
1 Linux Operating System
2 Unix Operating System
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
4) 如何删除指定范围内的行?
使用以下 sed 命令删除 sed-demo.txt 中的第 5 到 7 行。
# sed '5,7d' sed-demo.txt
1 Linux Operating System
2 Unix Operating System
3 RHEL
4 Red Hat
8 Debian
9 Ubuntu
10 openSUSE
5) 如何删除多行内容?
sed 命令能够删除给定行的集合。
本例中,下面的 sed 命令删除了第 1 行、第 5 行、第 9 行和最后一行。
# sed '1d;5d;9d;$d' sed-demo.txt
2 Unix Operating System
3 RHEL
4 Red Hat
6 Arch Linux
7 CentOS
8 Debian
5a) 如何删除指定范围以外的行?
使用以下 sed 命令删除 sed-demo.txt 中第 3 到 6 行范围以外的所有行。
# sed '3,6!d' sed-demo.txt
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
6) 如何删除空行?
使用以下 sed 命令删除 sed-demo.txt 中的空行。
# sed '/^$/d' sed-demo.txt
1 Linux Operating System
2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
7) 如何删除包含某个模式的行?
使用以下 sed 命令删除 sed-demo.txt 中匹配到 System 模式的行。
# sed '/System/d' sed-demo.txt
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
8) 如何删除包含字符串集合中某个字符串的行?
使用以下 sed 命令删除 sed-demo.txt 中匹配到 System 或 Linux 表达式的行。
# sed '/System\|Linux/d' sed-demo.txt
3 RHEL
4 Red Hat
5 Fedora
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
9) 如何删除以指定字符开头的行?
为了测试,我创建了 sed-demo-1.txt 文件,并添加了以下内容。
# cat sed-demo-1.txt
Linux Operating System
Unix Operating System
RHEL
Red Hat
Fedora
debian
ubuntu
Arch Linux - 1
2 - Manjaro
3 4 5 6
使用以下 sed 命令删除以 R 字符开头的所有行。
# sed '/^R/d' sed-demo-1.txt
Linux Operating System
Unix Operating System
Fedora
debian
ubuntu
Arch Linux - 1
2 - Manjaro
3 4 5 6
使用以下 sed 命令删除 R 或者 F 字符开头的所有行。
# sed '/^[RF]/d' sed-demo-1.txt
Linux Operating System
Unix Operating System
debian
ubuntu
Arch Linux - 1
2 - Manjaro
3 4 5 6
10) 如何删除以指定字符结尾的行?
使用以下 sed 命令删除 m 字符结尾的所有行。
# sed '/m$/d' sed-demo.txt
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
使用以下 sed 命令删除 x 或者 m 字符结尾的所有行。
# sed '/[xm]$/d' sed-demo.txt
3 RHEL
4 Red Hat
5 Fedora
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
11) 如何删除所有大写字母开头的行?
使用以下 sed 命令删除所有大写字母开头的行。
# sed '/^[A-Z]/d' sed-demo-1.txt
debian
ubuntu
2 - Manjaro
3 4 5 6
12) 如何删除指定范围内匹配模式的行?
使用以下 sed 命令删除第 1 到 6 行中包含 Linux 表达式的行。
# sed '1,6{/Linux/d;}' sed-demo.txt
2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
13) 如何删除匹配模式的行及其下一行?
使用以下 sed 命令删除包含 System 表达式的行以及它的下一行。
# sed '/System/{N;d;}' sed-demo.txt
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE
14) 如何删除包含数字的行?
使用以下 sed 命令删除所有包含数字的行。
# sed '/[0-9]/d' sed-demo-1.txt
Linux Operating System
Unix Operating System
RHEL
Red Hat
Fedora
debian
ubuntu
使用以下 sed 命令删除所有以数字开头的行。
# sed '/^[0-9]/d' sed-demo-1.txt
Linux Operating System
Unix Operating System
RHEL
Red Hat
Fedora
debian
ubuntu
Arch Linux - 1
使用以下 sed 命令删除所有以数字结尾的行。
# sed '/[0-9]$/d' sed-demo-1.txt
Linux Operating System
Unix Operating System
RHEL
Red Hat
Fedora
debian
ubuntu
2 - Manjaro
15) 如何删除包含字母的行?
使用以下 sed 命令删除所有包含字母的行。
# sed '/[A-Za-z]/d' sed-demo-1.txt
3 4 5 6
[转帖]如何使用 sed 命令删除文件中的行的更多相关文章
- 【Shell】使用sed命令替换文件中的某一行
原始文件内容 -bash-3.2# cat configTest.xml <?xml version="1.0" encoding="UTF-8"?> ...
- 使用sed命令向文件中追加可变字符串
1.如何向文件追加可变字符串,有如下两种方法 sed -i '1a '$s'' filename sed -i "1a $s" filename 注意: 以上命令是假定向文件fil ...
- linux命令读取文件中特定行
1.如果你只想看文件的前5行,可以使用head命令, 如: head -5 /etc/passwd 2.如果你想查看文件的后10行,可以使用tail命令, 如: tail -10 /etc/passw ...
- python 删除文件中指定行
代码适用情况:xml文件,循环出现某几行,根据这几行中的某个字段删掉这几行这段代码的作用删除jenkins中config.xml中在自动生成pipline报错的时的回滚 start = '<se ...
- Linux下Sed命令替换文件中的所有IP
命令: sed -ri 's/([0-9]{1,3}\.){3}[0-9]{1,3}/localhost/g' es_create_index.sh 如图:
- 运用sed命令高效地删除文件的特定行
运用 sed 命令高效地删除文件的特定行 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的.但是 ...
- sed命令针对文件操作具体解释
Linux的简单shell脚本中改动文件操作 1.Sed简单介绍 sed 是一种在线编辑器,它一次处理一行内容.处理时.把当前处理的行存储在暂时缓冲区中,称为"模式空间"(patt ...
- sed命令替换文件内容
reference: https://www.cnblogs.com/starof/p/4181985.html 抓取目录名并修改 ls | grep "XXX" > 1.t ...
- linux 下用find命令查找文件,rm命令删除文件
linux 下用find命令查找文件,rm命令删除文件. 删除指定目录下指定文件find 要查找的目录名 -name .svn |xargs rm -rf 删除指定名称的文件或文件夹: find -t ...
- linux命令截取文件最后n行(所有命令)
linux命令截取文件最后n行(所有命令) tail -n a.txt > b.txt 联想:系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) una ...
随机推荐
- vue星星评分
<template> <div> <div class="xx"> <div v-for="(i, index) in list ...
- ChatGPT Prompts整理总结
最近一直在学习ChatGPT Prompt的编写技巧,做了一些验证和整理,分享给大家 Act as a Linux Terminal 英文Prompt I want you to act as a l ...
- MySQL进阶篇:详解索引分类和索引语法
MySQL进阶篇:第二章_二.三_ 索引分类和索引语法 索引分类 在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引.唯一索引.常规索引.全文索引. 分类 含义 特点 关键字 主键索引 针 ...
- 能够让机器狗学会灭火, ModelArts3.0让AI离我们又近一步
摘要:训练.标注成本节省90%!华为云自动化AI开发平台ModelArts 3.0发布,从训练数据到模型落地一站式打通. 今年的华为,着实遭遇了不小的困难. 尤其是供应链,包括芯片方面的打击,让华为轮 ...
- GaussDB(DWS)集群中寻找节点CPU占用高的语句
摘要:本文主要通过实例讲解如何通过gs_cpuwatcher.sh 脚本寻找CPU占用高语句. 本文分享自华为云社区<GaussDB(DWS) gs_cpuwatcher.sh 脚本如何寻找CP ...
- 论文解读丨CIKM'22 MARINA:An MLP-Attention Model for Multivariate Time-Series Analysis
摘要:华为云数据库创新Lab在论文<MARINA: An MLP-Attention Model for Multivariate Time-Series Analysis>中提出了华为自 ...
- vue2升级vue3:webpack vue-loader 打包配置
如果没有啥特别的需求还是推荐vue-cli! vite vue3 TSX项目 虽然vite 很香,但是vite rollup 动态加载,多页面 等问题比较难搞 vite的缺点 wepback _ ...
- MQTT 客户端 MQTT.fx 使用说明
下载 官网:https://softblade.de/en/download-2/ 说明:最后的免费版本是 MQTT.fx 1.7.1,官网已经没有免费的版本 下载 MQTT.fx 1.7.1 htt ...
- 遇事不决,量子力学;不懂配色,赛博朋克。推荐一个Python可视化库
遇事不决,量子力学;不懂配色,赛博朋克.推荐一个Python可视化库 12月10日,历经多次跳票后,波兰公司CD Projekt Red制作的<赛博朋克2077>终于正式发售,在Steam ...
- Dubbo 泛化调用在vivo统一配置系统的应用
作者:vivo 互联网服务器团队- Wang Fei.LinYupan Dubbo泛化调用特性可以在不依赖服务接口API包的场景中发起远程调用, 这种特性特别适合框架集成和网关类应用开发. 本文结合在 ...