您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

通过 20 个实例掌握 Linux Sed 命令

时间:2023-02-04 14:48:13  来源:今日头条  作者:鸠摩智首席音效师

 

SED 命令或 流编辑器是 linux / Unix 系统提供的非常强大的实用程序。它主要用于文本替换,查找和替换,但也可以执行其他文本操作,例如 插入,删除,搜索 等。使用 SED,我们可以编辑完整的文件而无需打开它。SED 还支持使用正则表达式,这使得 SED 成为更强大的测试操作工具。

基本语法如下:

sed OPTIONS… [SCRIPT] [INPUTFILE…]

 

(1) 显示文件的部分文本

使用 sed,可以只查看文件的一部分,而不是查看整个文件,示例如下:

[linuxtechi@localhost ~]$ sed -n 22,29p testfile.txt

本例子,选项 n 将抑制整个文件的打印,选项 p 将只打印 22-29 行

(2) 显示除某些行之外的所有行

使用选项 d,显示除 22-29 行之外的所有行

[linuxtechi@localhost ~]$ sed 22,29d testfile.txt

(3) 显示从第 n 行开始的每 m 行

显示从第 2 行或任何其他行开始的每 3 行内容,使用以下命令

[linuxtechi@localhost ~]$ sed -n '2~3p' file.txt

(4) 删除一行

其中 N 是行号,选项 d 将删除提到的行号,示例如下:

[linuxtechi@localhost ~]$ sed Nd testfile.txt

若要删除文件的最后一行,请使用如下命令:

[linuxtechi@localhost ~]$ sed $d testfile.txt

(5) 删除一系列行

从 testfile.txt 文件中删除 29-34 行

[linuxtechi@localhost ~]$ sed '29,34d' testfile.txt

(6) 删除范围以外的行

从 testfile.txt 文件中删除 29-34 之外的行

[linuxtechi@localhost ~]$ sed '29,34!d' testfile.txt

(7) 添加空白行 / 空格

使用选项 G, 可以在每个非空行之后添加一个空行

[linuxtechi@localhost ~]$ sed G testfile.txt

(8) 查找和替换(首次替换)

使用 s 选项,将搜索 danger,并将其替换为 saftey,执行首次匹配。

[linuxtechi@localhost ~]$ sed 's/danger/safety/' testfile.txt

(9) 查找和替换(全局替换)

为了完全替换文件中的所以单词,我们将使用带有 s 的选项 g

[linuxtechi@localhost ~]$ sed 's/danger/safety/g' testfile.txt

(10) 替换第 n 次出现的字符串模式

还可以在第 n 次出现时替换字符串,比如只有在第二次出现时才用 danger 替换 safety,依然是首次替换模式

[linuxtechi@localhost ~]$ sed 's/danger/safety/2' testfile.txt

为了完全替换第 2 次出现的所有单词,我们将使用带有 s 的选项 g,完全替换模式

[linuxtechi@localhost ~]$ sed 's/danger/safety/2g' testfile.txt

(11) 替换特定行上的字符串

只替换文件第 4 行的字符串

[linuxtechi@localhost ~]$ sed '4 s/danger/safety/' testfile.txt

替换文件第 4-9 行的字符串

[linuxtechi@localhost ~]$  sed '4,9 s/danger/safety/' testfile.txt

(12) 在匹配搜索之后 / 之前添加一行

使用选项 a, 在每个模式匹配之后添加新行

[linuxtechi@localhost ~]$ sed '/danger/a "This is new line with text after match"' testfile.txt

使用选项 i, 在每个模式匹配之前添加新行

[linuxtechi@localhost ~]$ sed '/danger/i "This is new line with text before match" ' testfile.txt

(13) 用匹配的模式更改整行

使用 c 选项,当匹配时,正行都会被新内容替换,示例如下:

[linuxtechi@localhost ~]$ sed '/danger/c "This will be the new line" ' testfile.txt

到目前为止,我们只使用 sed 的简单表达式,现在我们将讨论 sed 与 regex 的一些高级用法

(14) 运行多个 sed 命令

如果需要执行多个 sed 表达式,可以使用选项 e 将 sed 命令链接起来

[linuxtechi@localhost ~]$  sed -e 's/danger/safety/g' -e 's/hate/love/' testfile.txt

(15) 在编辑文件之前进行备份

编辑之前创建文件的备份副本,请使用选项 -i.bak

[linuxtechi@localhost ~]$ sed -i.bak -e 's/danger/safety/g'  testfile.txt

这将创建扩展名为.bak 的文件的备份副本,你也可以使用其他扩展,例如 -i.backup

(16) 删除以模式开头和结尾的文件行

删除以特定字符串开始并以另一个字符串结束的行,示例如下:

[linuxtechi@localhost ~]$ sed -e 's/^danger.*stops$//g' testfile.txt

(17) 附加行

使用 sed & regex 在每行之前添加一些内容,示例如下:

[linuxtechi@localhost ~]$ sed -e 's/.*/testing sed &/' testfile.txt

(18) 删除所有注释行和空行

要删除所有注释行,即带有 # 和所有空行的行,使用如下命令

[linuxtechi@localhost ~]$ sed -e 's/#.*//;/^$/d' testfile.txt

只删除注释行,使用如下命令:

[linuxtechi@localhost ~]$ sed -e 's/#.*//' testfile.txt

(19) 从 /etc/passwd 文件获取所有用户名

要获取 /etc/passwd 文件的所有用户名列表,使用如下命令:

[linuxtechi@localhost ~]$  sed 's/([^:]*).*/1/' /etc/passwd

(20) 防止覆盖系统链接

sed -i 命令已经被用来删除系统链接,并只创建常规文件来代替链接文件。因此,为了避免这种情况并防止 sed -i 破坏链接,请在执行命令时使用 follow-symklinks 选项。

假设我们想在 centos 或 RHEL 服务器上禁用 SELinux

[linuxtechi@localhost ~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux


Tags:Linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08  Search: Linux  点击:(6)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25  Search: Linux  点击:(11)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27  Search: Linux  点击:(49)  评论:(0)  加入收藏
2024 年 Linux 和开源的六大趋势预测
让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造本年度的各种潮流。我们不能预见未来,所以无法精确预知将会发生什么,但根据目前...【详细内容】
2024-01-09  Search: Linux  点击:(92)  评论:(0)  加入收藏
Linux 启动过程详解
第 1 步 - 当我们打开电源时,BIOS(基本输入/输出系统)或UEFI(统一可扩展固件接口)固件从非易失性存储器加载,并执行POST(开机自检)。第 2 步 - BIOS/UEFI 检测连接到系统的设备,包括...【详细内容】
2024-01-02  Search: Linux  点击:(88)  评论:(0)  加入收藏
对 Bash 感到厌倦?教你如何在 Linux 中更改默认 Shell
Bash 并不是唯一可供选择的 Shell。还存在数量众多的 Shell,它们都有一些独特的特性,例如 Zsh、Fish、Ksh 和 Xonsh。在你的系统中,你可以同时安装多个 Shell。要想将另一个 Sh...【详细内容】
2023-12-14  Search: Linux  点击:(199)  评论:(0)  加入收藏
如何解决Linux 服务器性能问题?
Linux 服务器以其稳定性和可靠性而闻名,但与任何系统一样,它们有时也会遇到性能问题。当您的 Linux 服务器的性能开始下降时,必须及时解决问题以确保应用程序和服务的顺利运行...【详细内容】
2023-12-14  Search: Linux  点击:(230)  评论:(0)  加入收藏
适用于 Linux 的 LibreOffice 替代品
LibreOffice 是一个出色的开源文档套件。它预装在许多 Linux 发行版上,应该足以满足大多数用户的需求。然而,有些人可能不喜欢它的用户界面和功能集。某些用户可能想尝试其他...【详细内容】
2023-11-30  Search: Linux  点击:(122)  评论:(0)  加入收藏
十个最佳免费 Linux 防火墙工具
概述防火墙是保护网络边界的关键。防火墙会阻止敏感端口并过滤传入和传出流量,以阻止恶意连接并确保不会发生未经请求的数据交换。在自由开源软件的世界里,有很多防火墙解决方...【详细内容】
2023-11-28  Search: Linux  点击:(173)  评论:(0)  加入收藏
Linux 内核调度器源码解析:从调度入口到挑选下一个进程
在Linux内核中,调度器(scheduler)扮演着至关重要的角色,决定了哪个进程将获得CPU的执行时间。本文将深入剖析内核中调度器的代码实现,从入口函数开始,一步步分析如何选择下一个要...【详细内容】
2023-11-27  Search: Linux  点击:(269)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(6)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(16)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(10)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(11)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(54)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(49)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(51)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(76)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(68)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(85)  评论:(0)  加入收藏
站内最新
站内热门
站内头条