我正在尝试理解shell命令:sed -n 'p;n'
您将能够在第二行上打印,我试图了解它的命令工作原理(n;p
),为什么会有这种行为。
例如,如果我正在做p;n;n
,它将选择三行中的一行,但是p;p;n
它将打印第一行两次,隐藏第二行,第三行打印两次,依此类推。 ,为什么不打印第一行和第二行,而隐藏第三行呢?
我希望我有点清楚,如果有人可以帮助我,很难解释我的问题。
答案 0 :(得分:1)
sed -n 'p;n'
-n
禁止显示所有未明确打印的输出。
'p;n'
是在每个输入行上运行的sed脚本。分号是两个命令p
和n
之间的分隔符。
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'
。