用 sed 显示一行两行
Display one line of two with sed
我正在尝试理解 shell 命令:sed -n 'p;n'
有了这个你就可以打印两行了,我想了解它的命令是如何工作的(n;p
),为什么它有这种行为。
例如,如果我正在做 p;n;n
,它会 select 三行,但是 p;p;n
它会打印两次第一行,隐藏第二行,打印第三行的两倍等等,为什么不打印第一行和第二行,而隐藏第三行?
我希望我说得清楚一点,很难解释我的问题,如果有人能帮助我的话。
sed -n 'p;n'
-n
抑制所有未显式打印的输出。
'p;n'
是每个输入行上 运行 的 sed 脚本。分号是两个命令之间的分隔符,p
和 n
.
p
打印当前行,而不移动到下一行。
n
移动到 下一个 行而不打印任何内容。
一旦这两个命令在当前行上 运行,sed 移动到下一行,然后在这一新行上再次 运行s 脚本。该脚本将保持 运行ning 直到没有更多的输入行。脚本的效果是一直打印,然后跳行。
p;n;n
这基本上是相同的脚本,但它跳过了两行而不是一行。
p;p;n
这基本上是同一个脚本,但它在跳过之前打印了两次该行。
why it isn't printing the first and second line, and hide the third one ?
因为 p
不会让 sed 前进一行,只有 n
(或到达脚本末尾)才会这样做。
(注意 sed -n 'p'
打印每行而不跳过任何行,sed -n 'p;p;p'
打印每行三次,sed -n 'p;n;p'
等同于 sed -n 'p'
可能会有所帮助.)
我正在尝试理解 shell 命令:sed -n 'p;n'
有了这个你就可以打印两行了,我想了解它的命令是如何工作的(n;p
),为什么它有这种行为。
例如,如果我正在做 p;n;n
,它会 select 三行,但是 p;p;n
它会打印两次第一行,隐藏第二行,打印第三行的两倍等等,为什么不打印第一行和第二行,而隐藏第三行?
我希望我说得清楚一点,很难解释我的问题,如果有人能帮助我的话。
sed -n 'p;n'
-n
抑制所有未显式打印的输出。
'p;n'
是每个输入行上 运行 的 sed 脚本。分号是两个命令之间的分隔符,p
和 n
.
p
打印当前行,而不移动到下一行。
n
移动到 下一个 行而不打印任何内容。
一旦这两个命令在当前行上 运行,sed 移动到下一行,然后在这一新行上再次 运行s 脚本。该脚本将保持 运行ning 直到没有更多的输入行。脚本的效果是一直打印,然后跳行。
p;n;n
这基本上是相同的脚本,但它跳过了两行而不是一行。
p;p;n
这基本上是同一个脚本,但它在跳过之前打印了两次该行。
why it isn't printing the first and second line, and hide the third one ?
因为 p
不会让 sed 前进一行,只有 n
(或到达脚本末尾)才会这样做。
(注意 sed -n 'p'
打印每行而不跳过任何行,sed -n 'p;p;p'
打印每行三次,sed -n 'p;n;p'
等同于 sed -n 'p'
可能会有所帮助.)