SED 介绍
sed
(Stream Editor)意为流编辑器,是Unix常见的命令行程序。是Bell实验室的 Lee E.McMahon 在1973年到1974年之间开发完成,目前可以在大多数操作系统中使用。
sed
的出现是作为 grep
的一个继任者,因为 grep
只能简单的进行查找和替换,但是考虑还可能会有删除等各种需求,McMahon 开发了一个更具通用性的工具。sed
著名的语法规则包括使用 /
进行模式匹配,以及 s///
来进行替代。与同期存在的工具 ed
一起,sed
的语法影响了后来发展的 ECMAScript 和 Perl。GNU sed
添加了很多特性,包括著名的 in-place editing。
语法
看一下 sed
的基本语法:
1 | sed [-nefri] 'command' [file ...] |
The sed utility reads the specified files, or the standard input if no files are specified, modifying the input as specified by a list of commands. The input is then written to the standard output.
sed
从文件或者标准输入中获取内容,然后按照命令列表对内容进行修改,最后再将结果发送给标准输出。
一些常用选项的含义:
-n
使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-e
直接在指令列模式上进行sed
的动作编辑。-f
直接将sed
的动作写在一个文件内,通过-f
参数执行文件内的动作。-i
直接修改读取的文件的内容,而不是打印到标准输出。
一些常用的命令:
a
新增d
删除s
替换p
打印
删除文件的内容
通过 d
参数加匹配规则,我们可以方便的删除文件中的内容。
1 | $ sed '3d' fileName.txt #删除第3行,并将修改打到标准输出 |
替换文件的内容
如果只是想修改某一行的部分内容,可以使用 g
参数,具体示例如下。
1 | $ sed 's/^/ABC /' fileName.txt #在每一行增加ABC |
虽然容器、云基础设施非常普遍的今天,在企业做运维场景下我们直接使用 sed
命令的机会逐渐变少。但 sed
就像单兵作战时的秘密武器,如果我们能够熟练的掌握,就能够做到手中有粮遇事不慌,借此机会在老板面前展示一番,那么你的前途就大大的了。