我现在正在学习 sed。这个波浪号“~”最让我困惑。
例如,命令
sed -n '1~2 w output.txt' input.txt
正在打印奇数行(到文件output.txt)。
在同一个教程中,还给出了它会跳过从 1 到 2 的行,然后开始打印第 2 行旁边的行,以防我们使用
sed -n '1~2 p' input.txt
这个波形符的绝对解释是什么?
答案1
这是一个 GNUsed
扩展:
first~step
匹配
step
以 line 开头的每一行first
。例如,sed -n 1~2p
将打印输入流中的所有奇数行,并且地址2~5
将从第二行开始每隔五行匹配一次。first
可以为零;在这种情况下,sed
的操作就好像它等于step
。 (这是一个扩展。)
您的两个示例匹配相同的行,但第一个将w
它们写入 ( ) 文件,而第二个示例将p
它们打印 ( ) 到标准输出所在的位置。
一般来说,请务必参阅命令手册。该手册很少含糊不清。通过组合其功能的多个方面来应用命令有时可能很难在教程中解释(有时教程试图通过以多种方式重新表述相同的语句来使事情更容易理解,这可能会导致混乱),但是手册是聚合命令每一位功能的明确参考。