当前位置: 首页
科技数码
每个 Linux 管理员都应该知道的十个 sed 单行命令(附真实示例)

每个 Linux 管理员都应该知道的十个 sed 单行命令(附真实示例)

热心网友 时间:2025-12-15
转载

本文将深入探讨十个适合初学者的sed单行命令,通过这些命令,你将能够直接从终端高效地搜索、替换和操作文本,大幅提升工作效率。 在日常的Linux系统管理与运维工作中,文本处理是一项高频且重要的操作。

本文将深入探讨十个适合初学者的sed单行命令,通过这些命令,你将能够直接从终端高效地搜索、替换和操作文本,大幅提升工作效率。

在日常的Linux系统管理与运维工作中,文本处理是一项高频且重要的操作。本文将深入探讨十个适合初学者的sed单行命令,通过这些命令,你将能够直接从终端高效地搜索、替换和操作文本,大幅提升工作效率。

一、Linux用户应该知道的sed单行命令

sed,即“流编辑器”(Stream Editor),是Linux系统中极为强大的文本处理工具。它集搜索、查找、替换、删除和编辑等功能于一身,所有操作均可在终端完成,无需借助复杂的图形化文本编辑器。无论是清理杂乱的文件、调整系统配置,还是自动化繁琐的文本编辑任务,sed都能发挥巨大作用。

接下来,我们将展示10个必须掌握的sed单行命令,并通过可在本地运行的真实示例进行逐步讲解。即使你是sed的初学者,也能轻松上手,快速掌握这些实用技巧。

二、真实示例:创建测试文件

为了让大家更直观地感受sed命令的实际效果,我们先创建一个小型的真实样例文件。这个文件模拟了配置文件、日志或简单报告中的文本内容,方便你亲自运行sed命令,并观察文本内容的变化。

在终端中运行以下命令:

cat < sample.txtWelcome to TecmintThis is a test fileThe quick brown foxjumps over the lazy dogFoo bar fooPattern is hereWhitespace at end Leading whitespaceEOF

上述命令使用了here-document(<

此时,你可以使用cat sample.txt或less sample.txt命令打开文件。在文件中,你会看到多种不同类型的内容,包括普通文本、空行、重复单词(foo和bar)、带末尾空格的行以及带前导空格的行。这些精心设置的不同元素,将用于演示sed在处理真实场景中文本时的强大能力。

1. 原地替换文件中的单词

搜索并替换特定单词或模式,是sed最常见且实用的功能之一。

假设在sample.txt文件中,单词foo出现了多次,现在我们想要将所有foo的实例都改为大写的FOO,可以使用以下命令:

sed -i 's/foo/FOO/g' sample.txt

这里,-i选项表示原地编辑文件,直接修改sample.txt的内容;s是替换命令,foo是要查找的单词,FOO是替换后的内容,g表示全局替换,即替换每行中所有匹配的实例。

在编辑重要文件时,为了避免意外丢失数据,建议先创建备份。可以通过在-i标志后添加备份扩展名来实现:

sed -i.bak 's/foo/FOO/g' sample.txt

执行该命令后,sample.txt文件会被编辑,同时会创建一个名为sample.txt.bak的备份文件,其中包含原始内容,这样即使操作出现问题,也能恢复到原始状态。

2. 删除空行

在处理配置文件、日志或脚本时,经常会遇到不必要的空行。虽然这些空行不会影响文件的功能,但会使文件显得杂乱无章,尤其是在排查问题或查看大量输出内容时,会增加阅读和分析的难度。

使用以下单行命令可以删除文件中的所有空行:

sed '/^$/d' sample.txt

在这个命令中,/^$/表示匹配空行,^表示行首,$表示行尾,中间没有任何字符即代表空行;d是删除命令,sed会将匹配到的空行删除。

如果你希望保留原始文件,将清理后的结果保存到新文件中,可以使用重定向操作:

sed '/^$/d' sample.txt > cleaned.txt

这样,原始的sample.txt文件保持不变,清理后的版本会被单独保存到cleaned.txt文件中。

3. 打印特定行

在实际工作中,有时并不需要处理整个文件,只需查看特定行范围的内容,例如调试脚本、查看配置文件的关键部分,或从日志中提取相关片段。

要仅打印sample.txt文件中的第2到第4行,可以使用以下命令:

sed -n '2,4p' sample.txt

-n选项表示禁止sed输出默认的处理结果,只输出我们指定的内容;2,4p中的2,4表示行号范围,p是打印命令。对sample.txt运行此命令后,输出如下:

This is a test fileThe quick brown foxjumps over the lazy dog

4. 删除特定行

在某些情况下,我们需要从文件中删除特定行,比如删除拼写错误的行、损坏的配置信息或无用的内容。

假设sample.txt文件的第3行内容是The quick brown fox,现在要删除这一行,可以运行以下命令:

sed '3d' sample.txt

默认情况下,sed会将编辑结果打印到终端,但不会直接修改文件内容,这样可以让我们安全地查看输出效果。输出示例如下:

1. Welcome to Tecmint2. This is a test file3. jumps over the lazy dog

如果确定要直接编辑文件,可以添加-i标志:

sed -i '3d' sample.txt

5. 仅替换每行的首次出现

在处理文本文件时,我们常常需要替换单词或短语,但有时只希望替换每行的第一次出现,而不是所有实例。

使用以下命令可以实现这一需求:

sed 's/bar/BAR/' sample.txt

该命令会将每行中第一个出现的bar改为大写的BAR,同一行中的其他bar保持不变。

如果想要替换每行的所有实例,则需要在命令末尾添加g标志:

sed 's/bar/BAR/g' sample.txt

6. 在模式前插入行

在编辑配置文件或脚本时,有时需要在匹配特定模式的行前插入文本,例如添加注释或新的指令。

使用以下命令可以实现这一操作:

sed '/Pattern/i Before this line' sample.txt

在这个命令中,/Pattern/是搜索词,sed会查找包含“Pattern”的行;i表示插入操作;“Before this line”是要插入的文本,它将被插入到匹配行之前。

7. 在模式后追加行

sed的另一个强大功能是可以在特定行后自动插入新文本,这在处理配置文件、日志或大量输出文件时非常实用。

在sed中,a命令表示追加操作,它会在匹配给定模式的每行后添加新行。使用以下命令:

sed '/Pattern/a After this line' sample.txt

运行该命令时,sed会逐行扫描sample.txt文件,当找到包含“Pattern”的行时,不会修改原行内容,而是在该行之后插入指定的新行内容“After this line”。

8. 替换匹配模式的整行

有时我们需要完全替换整行内容,而不是仅修改部分内容,并且只替换包含特定关键字或模式的行。

使用以下命令可以实现这一功能:

sed '/Whitespace/c This line was replaced' sample.txt

在这个命令中,/Whitespace/用于告诉sed查找包含“Whitespace”的行(注意:sed的匹配默认区分大小写);c This line was replaced表示将匹配到的行整行替换为指定的字符串"This line was replaced"。无论行中是“Whitespace at end”还是“ Leading whitespace”,sed都会删除整行,并插入新的内容。

9. 同时替换多个文件

在实际项目中,比如处理 相关文件时,可能会有数十甚至数百个.html文件仍在使用旧的http://链接,而不是更安全的https://链接。如果手动修改每个文件,效率会非常低。

此时,sed可以帮助我们快速完成替换操作:

sed -i 's/http:/https:/g' *.html

-i标志表示原地编辑文件;'s/http:/https:/g'是替换命令,用于查找所有http:并替换为https:;末尾的g确保替换每行中的所有匹配项;通配符*.html会匹配当前目录中所有以.html结尾的文件。

这个操作在 迁移到HTTPS或清理代码以增强安全性时非常有用,但一定要记得先备份文件!更安全的做法是自动创建备份:

sed -i.bak 's/http:/https:/g' *.html

10. 移除前导和trailing空格

在文本文件中,行首或行尾存在多余的空格或制表符是一种常见的格式问题,尤其是在日志、配置文件或数据导出文件中。虽然这些空格看似无害,但可能会导致脚本执行错误、解析异常,甚至影响文本的视觉对齐效果。不过,借助sed可以轻松解决这个问题:

sed 's/^[ \t]*//;s/[ \t]*$//' sample.txt

在这个命令中,s/^[ \t]*//用于移除所有前导空格(包括空格或制表符),其中^匹配行首,[ \t]*表示零个或多个空格或制表符;s/[ \t]*$//用于移除所有trailing空格,$表示锚定到行尾。分号;允许我们在单个sed命令中依次运行两个替换操作。

三、总结

通过本文的学习,你已经了解了10个实用的sed单行命令,并通过真实示例进行了实践。这些命令并非只是炫酷的技巧,而是在编辑配置文件、清理日志或自动化重复文本编辑任务时,能够反复使用的高效工具。掌握这些sed命令,将极大地提升你在Linux系统中的文本处理能力,让日常的系统管理与运维工作更加轻松、高效。

来源:https://www.51cto.com/article/820783.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
前阿里技术大牛领衔字节自研智驾浮出水面华大地魔遇最强对手

前阿里技术大牛领衔字节自研智驾浮出水面华大地魔遇最强对手

终于,字节跳动还是踏出了这一步。 据36kr报道,字节正步步为营进军自动驾驶领域,具体事项由Seed的世界模型团队负责,该团队由前阿里通义大模型技术负责人周畅领导。 现阶段,高阶智驾已成中高端车型必备功能,并且不断下沉市场,部分10万元以内的产品已经用上了L2+级高阶辅助驾驶,还有少量车型配备了激光

时间:2026-07-16 22:42
砺算LX 7G100零售版显卡于7月17日京东首发上市 支持8K6

砺算LX 7G100零售版显卡于7月17日京东首发上市 支持8K6

砺算科技官方宣布,旗下消费级显卡砺算 LX 7G100 零售版将于2026年7月17日在京东自营旗舰店正式开售。此前推出的创始版已全部售罄,本次零售版将作为后续供应,面向所有用户开放购买。 这款显卡基于砺算自主研发的TrueGPU架构,集成了多项硬核显示技术:支持NRSS超分辨率技术、10bit色深

时间:2026-07-16 22:41
亚马逊云科技开源MCP服务器 数秒免费检索全球科研数据

亚马逊云科技开源MCP服务器 数秒免费检索全球科研数据

7月15日,在日内瓦联合国国际电信联盟举办的“人工智能向善”全球峰会上,亚马逊云科技推出了一款全新工具——开源模型上下文协议(MCP)服务器。简单来说,科学家和研究人员现在可以直接与AI对话,几秒钟内就能从亚马逊云科技开放数据注册表(RODA)中检索到所需的数据集。这一工具整合了全球最大的免费公开科

时间:2026-07-16 22:40
三星T9运动相机内存卡推荐户外影像存储一步到位

三星T9运动相机内存卡推荐户外影像存储一步到位

对于运动相机内存卡推荐,许多用户最担心的就是低速卡导致录制中断,或者容量太小装不下大量素材。市面上可选产品众多,但真正能够兼顾高速稳定、大容量和多设备兼容的专业存储卡并不多见。今天我们将重点聚焦三星T9 microSD存储卡,深入解析其核心优势——看完这篇,你无需再反复对比其他品牌,它几乎能覆盖所有

时间:2026-07-16 22:39
靠谱大容量TF卡推荐三星T7满足多设备扩容需求

靠谱大容量TF卡推荐三星T7满足多设备扩容需求

说实话,现在手里的数码设备越来越多——平板、Switch、航拍无人机、运动相机……哪个不是存储空间的大户?偏偏很多设备出厂给的容量就那么一点点,扩容几乎成了刚需。这时候,一张靠谱的microSD TF卡就是最直接的解决方案。但低价杂牌卡的坑,相信不少人已经踩过。想要稳定性、大容量还兼顾通用性,三星原

时间:2026-07-16 22:39
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜