在本章中,我们将探讨SED的工作原理。要熟练使用SED,必须先了解其内部原理。 SED遵循简单的工作流程:读取(Read),执行(Execute)和显示(Display)。
Read - SED从输入流(文件,管道或标准输入)读取一行并将其存储在其内部缓冲区中,该内部缓冲区称为模式缓冲区。
Execute - 将所有SED命令顺序应用到模式缓冲区。
Display - 将(已修改的)内容发送到输出流。发送数据后,模式缓冲区将为空。
让我们创建一个文本文件 quote.txt ,其中包含著名作家Paulo Coelho的信息。
$ vi quote.txt There is only one thing that makes a dream impossible to achieve: the fear of failure.
为了了解SED的工作流程,让我们使用SED显示文件quote.txt的内容。本示例模拟 cat 命令。
$ sed '' quote.txt
执行以上代码后,将产生以下输出。
There is only one thing that makes a dream impossible to achieve: the fear of failure.
在上面的示例中,quote.txt是输入文件名,并且在此之前有一对单引号表示SED命令。让我们了解其运行流程:
首先,SED从输入文件quote.txt中读取一行并将其存储在模式缓冲区中。
然后,它将SED命令应用于模式缓冲区。在上面示例,没有SED命令,因此对模式缓冲区不执行任何操作。
最后,它删除并在标准输出上打印模式缓冲区的内容。
在以下示例中,SED接受来自标准输入流的输入。
$ sed ''
执行以上代码后,将产生以下输出。
There is only one thing that makes a dream impossible to achieve: the fear of failure. There is only one thing that makes a dream impossible to achieve: the fear of failure.
在这里,第一行通过键盘输入,第二行是SED生成的输出。要退出SED会话,请按ctrl-D(^ D)。