sed -n 'p;n'
-n 抑制所有未显式打印的输出。
'p;n'是在每个输入行上运行的 sed 脚本。分号是两个命令之间的分隔符,p而n.
p 打印当前行,而不移动到下一行。
n移动到下一行而不打印任何内容。
一旦在当前行上运行了这两个命令,sed 就会移动到下一行,然后在这个新行上再次运行脚本。这个脚本会一直运行,直到没有更多的输入行。脚本的作用是继续打印,然后跳过行。
p;n;n
这大部分是相同的脚本,但它跳过了两行而不是一行。
p;p;n
这大部分是相同的脚本,但它在跳过它之前打印了两次该行。
为什么不打印第一行和第二行,并隐藏第三行?
因为p不会将 sed 向前推进一行,只有n(或到达脚本的末尾)才会这样做。
(注意sed -n 'p'打印每一行而不跳过任何一行可能会有所帮助,每行sed -n 'p;p;p'打印三遍, sed -n 'p;n;p'等价于sed -n 'p'。)