Sed - 特殊字符
-
简述
SED 提供了两个特殊字符,它们被视为命令。本章说明这两个特殊字符的用法。 -
= 命令
"=" 命令处理行号。下面给出的是“=”命令的语法:= 命令将行号及其内容写入标准输出流。以下示例说明了这一点。执行上面的代码,你会得到以下结果:让我们打印行号和前四行的内容。以下命令打印带行号的前四行,其余不带行号。执行上面的代码,你会得到以下结果:此外,我们可以指示 SED 在模式匹配成功时打印行号。下面的示例打印包含模式“Paulo”的行号。执行上面的代码,你会得到以下结果:你能猜出下面的 SED 命令是做什么的吗?执行上面的代码,你会得到以下结果:是的你是对的。它计算文件中存在的总行数。让我们揭开代码的神秘面纱。在命令部分,我们使用“$ =”打印最后一行的行号及其内容。但我们也提供了-n 禁止默认打印模式缓冲区的标志。因此,仅显示最后的行号。 -
& 命令
SED 支持特殊字符 &。每当模式匹配成功时,这个特殊字符就会存储匹配的模式。它通常与替换命令一起使用。让我们看看如何利用这个高效的特性。book.txt 文件中的每一行都有编号。让我们添加单词Book number在每一行的开头。以下示例说明了这一点。执行上面的代码,你会得到以下结果:这个例子非常简单。首先,我们搜索第一次出现的数字,即行号(这就是我们使用 [[:digit:]] 的原因),SED 自动将匹配的模式存储在特殊字符 & 中。第二步,我们插入单词Book number在每个匹配的模式之前,即在每一行之前。让我们再举一个例子。在 book.txt 文件中,最后一位数字表示书的页数。让我们在此之前添加“Pages =”。为此,请找到最后一次出现的数字并将其替换为“Pages = &”。这里,&存储匹配的模式,即页数在执行上述语法时,您会得到以下结果:暂时只记得[[:digit:]]*$查找最后一次出现的数字。在“正则表达式”一章中,我们将探索更多关于正则表达式的知识。