sed中~的解释

Upe*_*a01 9 sed

我现在正在学习 sed。有一个波浪号“~”让我最困惑。

例如,命令

sed -n '1~2 w output.txt' input.txt
Run Code Online (Sandbox Code Playgroud)

正在打印奇数行(到文件 output.txt)。

在同一个教程中,还给出它跳过从 1 到 2 的行,然后开始打印行号 2 旁边的行,以防我们使用

sed -n '1~2 p' input.txt
Run Code Online (Sandbox Code Playgroud)

这个波浪号的绝对解释是什么?

Kus*_*nda 13

这是一个 GNUsed扩展:

first~step

匹配以stepline 开头的每一行first。例如,sed -n 1~2p将打印输入流中的所有奇数行,地址2~5将匹配每第五行,从第二行开始。 first可以为零;在这种情况下, sed操作就像它等于step。(这是一个扩展。)

您的两个示例匹配相同的行,但第一个将 ( w) 它们写入文件,而第二个将 ( ) 它们打印p到标准输出的任何位置。

通常,请始终参考命令的手册。手册很少有歧义。通过组合其功能的几个方面来应用命令有时可能难以在教程中解释(有时教程试图通过以多种方式重新表述相同的语句来使事情更容易理解,这可能会导致混淆),但是该手册是聚合命令所做的每一位的明确参考。