学习掌握 Sed 文本编辑器

sed 命令是为 AT&T 最初的 Unix 操作系统第 7 版创建的,此后,可能每一个 Unix 和 Linux 操作系统都包含了它。sed 应用程序是一个 流编辑器,与文本编辑器不同的是,它不会打开一个视觉缓冲区,将文件的数据加载到其中进行处理。相反,它根据在终端输入的命令或脚本中的一系列命令,逐行对文件进行操作。

安装

如果你使用的是 Linux、BSD 或 macOS,那么你已经安装了 GNU 或 BSD 版的 sed。这是两个不同的原始 sed 命令的重新实现,虽然它们很相似,但也有一些小的区别。GNU sed 通常被认为是功能最丰富的 sed,而且它在这些平台上都可以广泛使用。

如果你找不到 GNU sed(在非 Linux 系统上通常被称为 gsed),那么你可以。安装 GNU sed 的好处是,可以使用它的额外功能,但它也可以被限制为只符合 sed 的规范,如果你需要移植性的话。

在 Windows 上,你可以用GNU sed

Sed 如何工作

sed 应用程序一次只处理一行。因为它没有视觉显示,所以它在内存中创建了一个模式空间:一个包含输入流的当前行的空间(去掉任何尾部的换行符)。一旦填充了模式空间,你对 sed 的指令就会被执行。有时你的指令是有条件的,有时是无条件的,所以这些指令的结果取决于你如何使用 sed

当命令结束时,sed 会将模式空间的内容打印到输出流中。默认的输出流是标准输出,但可以将其重定向到一个文件,甚至使用 --in-place=.bak 选项重定向到同一个文件中。

然后再从下一个输入行开始循环。

sed命令的语法是:


  1. $ sed --options [optional SCRIPT] [INPUT FILE or STREAM]

找到你要编辑的内容

在可视化编辑器中,你通常不需要考虑太多,就能在文本文件中找到你想要修改的内容。你的眼睛(或屏幕阅读器)会扫描文本,找到你想改变的单词或你想插入或删除文本的地方,然后你就可以开始输入了。而 sed 没有交互模式,所以你需要告诉它必须满足什么条件才能运行特定的命令。

在这些例子中,假设一个名为 example.txt 的文件包含了这样的文字:


  1. hello
  2. world
  3. This is line three.
  4. Here is the final line.

行号

指定行号告诉 sed 只对文件中的那一行进行操作。

例如,下面这条命令选择文件的第 1 行并打印出来。因为 sed 在处理后的默认操作也是打印一行到标准输出,这样做的效果就是重复第一行:


  1. $ sed '1p' example.txt
  2. hello
  3. hello
  4. world
  5. This is line three.
  6. Here is the final line.

你也可以步进式指定行号。例如,1~2 表示每两行选择一行(“从第一行开始每两行选择一行”)。指令 1~3 表示从第一行开始,每三行选择一行:


  1. $ sed '1p' example.txt
  2. hello
  3. hello
  4. world
  5. This is line three.
  6. Here is the final line.
  7. Here is the final line.
【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章