sed 1 简介

作者: 赵者也 | 来源:发表于2017-11-06 15:07 被阅读6次

    sed(意为流编辑器,源自英语“stream editor”的缩写)是Unix常见的命令行程序。sed 用来把文档或字符串里面的文字经过一系列编辑命令转换为另一种格式输出。sed通常用来匹配一个或多个正则表达式的文本进行处理。

    以上,是 sed 在维基百科上的简介。

    sed 是非交互式的面向数据流的编辑器。之所以说它时面向数据流的,是因为像很多 Unix 程序一样,输入通过程序被重定向到标准输出。输入通常来自文件,但也可以来自键盘。输出默认时发送到终端屏幕,但也可以重定向到文件。sed 可以通过解释脚本来工作,该脚本中指定了将要执行的动作。

    sed 提供的功能好像是交互式文本编辑器的自然扩展。例如,它提供可以全局地应用到单个或一组文件的搜索替换功能。尽管我们通常不会使用 sed 去修改指定文件中的仅出现一次的条目,但我们会发现使用它对许多文件进行一系列修改时是很有用的。考虑一下,几分甚至数秒钟之内在一百多个文件中进行 20 个不同的编辑,你就可以想象 sed 的强大了。

    使用 sed 类似于编写简单的 shell 脚本。我们可以依次指定将要执行的一系列行为。这些行为中的大部分可以在 vi 中手动地完成,比如:替换文本、删除某行、插入新文本等等。而 sed 的优势在于我们可以在一处(一个 sed 脚本中)指定所有的编辑命令,然后逐条执行它们。我们不必进入到每个文件中做修改。sed 同样可以有效地编辑非常大的、在使用交换式文本编辑器编辑时会很慢的文件。

    在创建和维护文档的过程中有很多机会使用 sed,尤其是当文档由单独的章节组成,每一章放在分隔的文件中时。特别是,比如一个文件稿本在评审之后,有很多变更可能要应用到所有文件中。例如,在软件文档化项目中,软件的名称或它的组件可能会变更,我们需要追查和进行修改,使用 sed,就可以很简单地进行处理。

    sed 可以用于实现整个文档的一致性。我们可以查找一个特定条目的所有不同的使用方式并把它们变成完全一致。例如,使用 ASCII 字符码替换前后双引号(弯引号“”而不是直引号"")时,就可以使用 sed。

    sed 具有几个基本的可以用于构建更复杂脚本的编程结构。它同样也有同时只能编辑一行的限制。

    总的来说,我们可以使用 sed 做如下操作:

    1. 自动化地编辑一个或多个文件
    2. 简化在多个文件中执行相同编辑的任务
    3. 编写转换程序

    本文参考自 《Linux Shell命令行及脚本编程实例详解

    相关文章

      网友评论

        本文标题:sed 1 简介

        本文链接:https://www.haomeiwen.com/subject/lnvruxtx.html