用sed显示一行两行

时间:2018-07-31 13:48:48

标签: shell sed line display

我正在尝试理解shell命令:sed -n 'p;n'

您将能够在第二行上打印,我试图了解它的命令工作原理(n;p),为什么会有这种行为。

例如,如果我正在做p;n;n,它将选择三行中的一行,但是p;p;n它将打印第一行两次,隐藏第二行,第三行打印两次,依此类推。 ,为什么不打印第一行和第二行,而隐藏第三行呢?

我希望我有点清楚,如果有人可以帮助我,很难解释我的问题。

1 个答案:

答案 0 :(得分:1)

sed -n 'p;n'

-n禁止显示所有未明确打印的输出。

'p;n'是在每个输入行上运行的sed脚本。分号是两个命令pn之间的分隔符。

p 打印当前行,而不移至下一行。

n移到下一个行,而不打印任何内容。

这两个命令在当前行上运行后,sed移至下一行,然后在新行上再次运行脚本。该脚本将一直运行,直到没有更多输入行。该脚本的作用是继续打印,然后跳过行。


p;n;n

这基本上是相同的脚本,但是它跳过了两行而不是一行。


p;p;n

这基本上是相同的脚本,但是在跳过该行之前,它会打印两次。


  

为什么不打印第一行和第二行,而隐藏第三行?

由于p不会向前移动一行,因此只有n(或到达脚本的末尾)可以这样做。

(注意到sed -n 'p'打印每行而不跳过任何行,sed -n 'p;p;p'每行打印三遍,sed -n 'p;n;p'等效于sed -n 'p'