📝 Sed教程
17篇技术文档📅  最后修改于: 2020-10-16 06:11:00        🧑  作者: Mango
PDF版本快速指南资源资源求职讨论区本教程将带您全面了解Stream EDitor(Sed),它是GNU / Linux上最著名的文本处理实用程序之一。与许多其他GNU / Linux实用程序类似,它是面向流的,并使用简单的编程语言。它能够用几行代码来解决复杂的文本处理任务。这个简单而强大的实用程序使GNU / Linux更加有趣。听众如果您是软件开发人员,系统管理员或GNU / Linux爱好者...
📅  最后修改于: 2020-10-16 06:11:15        🧑  作者: Mango
首字母缩写词SED代表Stream EDitor。它是一个简单但功能强大的实用程序,可解析文本并将其无缝转换。 SED由Bell Labs的Lee E. McMahon在1973–74年间开发。今天,它可以在所有主要操作系统上运行。McMahon编写了通用的面向行的编辑器,最终成为了SED。 SED借鉴了ed编辑器的语法和许多有用的功能。从一开始,它就支持正则表达式。 SED接受来自文件以及管道的...
📅  最后修改于: 2020-10-16 06:11:40        🧑  作者: Mango
本章介绍如何在GNU / Linux系统上设置SED环境。使用软件包管理器进行安装通常,大多数GNU / Linux发行版默认都提供SED。使用哪个命令来识别系统上是否存在该命令。如果没有,请使用apt软件包管理器在基于Debian的GNU / Linux上安装SED,如下所示:安装后,请确保可通过命令行访问SED。执行上述代码后,您将得到以下结果:同样,要在基于RPM的GNU / Linux上安...
📅  最后修改于: 2020-10-16 06:12:06        🧑  作者: Mango
在本章中,我们将探讨SED的工作原理。要成为SED的专家用户,必须了解其内部。 SED遵循简单的工作流程:读取,执行和显示。下图描述了工作流程。读取:SED从输入流(文件,管道或标准输入)读取一行并将其存储在其内部缓冲区(称为模式缓冲区)中。执行:将所有SED命令依次应用到模式缓冲区。默认情况下,除非指定行寻址,否则SED命令将应用于所有行(全局)。显示:将(修改的)内容发送到输出流。发送数据后,...
📅  最后修改于: 2020-10-16 06:12:38        🧑  作者: Mango
本章介绍SED支持的基本命令及其命令行语法。 SED可以通过以下两种形式调用:第一种形式允许内联指定命令,并且命令用单引号引起来。后者允许指定包含SED命令的脚本文件。但是,我们可以同时使用两种形式。 SED提供了各种命令行选项来控制其行为。让我们看看如何指定多个SED命令。 SED提供delete命令以删除某些行。让我们删除第一行,第二行和第五行。目前,请忽略delete命令的所有详细信息。稍后...
📅  最后修改于: 2020-10-16 06:12:58        🧑  作者: Mango
与其他编程语言一样,SED也提供了循环和分支功能来控制执行流程。在本章中,我们将探索更多有关如何在SED中使用循环和分支的信息。SED中的循环工作类似于goto语句。 SED可以跳到标签所标记的行,然后继续执行其余命令。在SED中,我们可以如下定义标签:在上面的示例中,冒号(:)之后的名称表示标签名称。要跳转到特定标签,我们可以使用b命令,后跟标签名称。如果省略标签名称,则SED跳至SED文件的末...
📅  最后修改于: 2020-10-16 06:13:14        🧑  作者: Mango
可以使用t命令创建分支。仅当上一个替代命令成功时,t命令才会跳到标签。让我们以与上一章相同的示例为例,但是现在不打印单个连字符(-),而是打印四个连字符。以下示例说明了t命令的用法。执行以上代码后,将产生以下结果。在上面的示例中,前两个命令是不言自明的。第三个命令定义了一个标签Loop。如果该行包含字符串“ Paulo”,则第四个命令加上连字符(-),并且t命令重复该过程,直到该行的开头有四个连字...
📅  最后修改于: 2020-10-16 06:13:50        🧑  作者: Mango
我们对任何文件执行的基本操作之一就是显示其内容。为此,我们可以使用print命令来打印模式缓冲区的内容。因此,让我们进一步了解模式缓冲区首先创建一个包含行号,书名,作者和页数的文件。在本教程中,我们将使用此文件。您可以根据需要使用任何文本文件。我们的文本文件将如下所示:现在,让我们打印文件内容。执行以上代码后,将产生以下结果。您可能想知道为什么每一行都显示两次。让我们找出答案。您还记得SED的工作...
📅  最后修改于: 2020-10-16 06:14:10        🧑  作者: Mango
在上一章中,我们了解了SED如何处理地址范围。本章介绍SED如何处理模式范围。模式范围可以是简单的文本或复杂的正则表达式。让我们举个例子。下面的示例打印作者Paulo Coelho的所有书籍。执行上述代码后,您将得到以下结果:在上面的示例中,SED在每一行上操作,并且仅打印与字符串Paulo匹配的那些行。我们还可以将模式范围与地址范围结合在一起。下面的示例打印从“炼金术士”的第一个匹配开始到第五行...
📅  最后修改于: 2020-10-16 06:16:38        🧑  作者: Mango
本章介绍了几个有用的SED命令。删除命令SED提供各种命令来操纵文本。让我们首先探讨一下delete命令。这是执行删除命令的方式:address1和address2分别是起始地址和结束地址,可以是行号或模式字符串。这两个地址都是可选参数。顾名思义,delete命令用于执行删除操作,并且由于SED在线运行,因此可以说该命令用于删除行。请注意,delete命令仅从模式缓冲区中删除行;该行不会发送到输出...
📅  最后修改于: 2020-10-16 06:17:05        🧑  作者: Mango
SED提供了两个特殊字符,它们被视为命令。本章说明这两个特殊字符的用法。=命令“ =”命令处理行号。下面给出的是“ =”命令的语法:=命令将行号及其内容写入标准输出流。以下示例说明了这一点。执行上述代码后,您将得到以下结果:让我们打印行号和前四行的内容。下面的命令显示前四行带有行号,其余的不打印行号。执行上述代码后,您将得到以下结果:此外,当模式匹配成功时,我们可以指示SED打印行号。下面的示例打...
📅  最后修改于: 2020-10-16 06:18:06        🧑  作者: Mango
替代命令诸如“查找和替换”之类的文本替换操作在任何文本编辑器中都是常见的。在本节中,我们说明了SED如何执行文本替换。下面给出了替换命令的语法。在这里,address1和address2分别是起始地址和结束地址,可以是行号或模式字符串。这两个地址都是可选参数。模式是我们要用替换字符串替换的文本。此外,我们可以在SED中指定可选标志。在books.txt文件中,我们使用了逗号(,)分隔每一列。让我们...
📅  最后修改于: 2020-10-16 06:18:57        🧑  作者: Mango
我们已经讨论了模式和保持缓冲区的用法。在本章中,我们将进一步探讨它们的用法。让我们讨论打印模式空间的n命令。它将与其他命令结合使用。下面给出的是n命令的语法。让我们举个例子。执行以上代码后,将产生以下结果:n命令打印模式缓冲区的内容,清除模式缓冲区,将下一行取到模式缓冲区中,并在其上应用命令。让我们考虑有三个SED命令之前n和具体如下●2个SED命令:在这种情况下,SED在模式缓冲区上应用前三个命...
📅  最后修改于: 2020-10-16 06:20:17        🧑  作者: Mango
正是这些正则表达式使SED变得强大而高效。使用正则表达式可以解决许多复杂的任务。任何命令行专家都知道正则表达式的功能。像许多其他GNU / Linux实用程序一样,SED也支持正则表达式,通常将其称为regex。本章详细描述了正则表达式。本章分为三部分:标准正则表达式,正则表达式的POSIX类和Meta字符。标准正则表达式行首(^)在正则表达式术语中,插入符(^)符号与行的开头匹配。下面的示例打印...
📅  最后修改于: 2020-10-16 06:21:20        🧑  作者: Mango
SED是一个了不起的实用程序,它允许使用多种方法来解决问题。这是UNIX方式,SED完美地证明了这一点。 GNU / Linux提供了许多有用的实用程序来执行日常任务。让我们使用SED模拟一些实用程序。有时似乎我们在用困难的方式解决一个简单的问题,但目的只是为了证明SED的强大功能。猫命令在以下示例中,每行都作为默认工作流程的一部分进行打印。执行上述代码后,您将得到以下结果:以下示例使用print...