shell - 用 sed 显示一行两个

标签 shell sed line display

我试图理解一个 shell 命令:sed -n 'p;n'
有了这个,你将能够在两行打印,我试图了解它的命令是如何工作的( n;p ),为什么它有这种行为。

例如,如果我正在做 p;n;n , 它将选择三行中的一行,但 p;p;n它将打印两次第一行,隐藏第二行,打印两次第三行等等,为什么它不打印第一行和第二行,并隐藏第三行?

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

最佳答案

sed -n 'p;n'
-n抑制所有未显式打印的输出。
'p;n'是在每个输入行上运行的 sed 脚本。分号是两个命令之间的分隔符,pn .
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/

相关文章:

javascript - node.js shell 命令执行

sed - 使用sed替换多行

bash - 删除 shell 中两个模式之间的线

bash - 在/etc/hosts 文件中添加行

java - 判断坐标是否在线

bash:PROMPT_COMMAND 不执行多个命令,单个命令有效

Linux Shell 脚本输入

bash - 内联 LaTeX\input 命令

objective-c - 如何检测可拖动线上的触摸(使用 drawRect 绘制)

count - 莱克斯 : print line numbers