我试图理解一个 shell 命令:sed -n 'p;n'
有了这个,你将能够在两行打印,我试图了解它的命令是如何工作的( n;p
),为什么它有这种行为。
例如,如果我正在做 p;n;n
, 它将选择三行中的一行,但 p;p;n
它将打印两次第一行,隐藏第二行,打印两次第三行等等,为什么它不打印第一行和第二行,并隐藏第三行?
我希望我有点清楚,如果有人可以帮助我,很难解释我的问题。
最佳答案
sed -n 'p;n'
-n
抑制所有未显式打印的输出。'p;n'
是在每个输入行上运行的 sed 脚本。分号是两个命令之间的分隔符,p
和 n
.p
版画 当前行,而不移动到下一行。n
移至 下一个 行而不打印任何内容。
一旦在当前行上运行了这两个命令,sed 就会移动到下一行,然后在这个新行上再次运行脚本。这个脚本会一直运行,直到没有更多的输入行。脚本的作用是继续打印,然后跳过行。
p;n;n
这大部分是相同的脚本,但它跳过了两行而不是一行。
p;p;n
这大部分是相同的脚本,但它在跳过它之前打印了两次该行。
why it isn't printing the first and second line, and hide the third one ?
因为
p
不向前推进一行,仅 n
(或到达脚本的末尾)就是这样做的。(注意
sed -n 'p'
打印每一行而不跳过任何行,sed -n 'p;p;p'
每行打印三遍,sed -n 'p;n;p'
等价于 sed -n 'p'
可能会有所帮助。)
关于shell - 用 sed 显示一行两个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51614959/