谁能解释一下 p
之间的区别和 P
在 Sed?
假设我想同时使用 p
在下面的文件中打印包含 gmail 的行和 P
给出相同的输出:
$ cat abc.txt
Gmail 10
Yahoo 20
Rediff 18
$ sed -n /Gmail/p abc.txt
Gmail 10
$ sed -n /Gmail/P abc.txt
Gmail 10
p
有什么区别和 P
?
最佳答案
在 sed , p
打印地址行,而 P
仅打印寻址行的第一部分(最多为换行符 \n
)。如果缓冲区中只有一行,p
和 P
是同一件事,但在逻辑上p
应该使用。
让我们看一个学术但简单的例子。假设我们要打印第 1 行,我们可以这样做
$ echo "line 1
$ This is line 2" | sed -n '1p'
> line 1
我们也可以做
$ echo "line 1
$ This is line 2" | sed -n '1P'
> line 1
这两个命令做同样的事情,因为缓冲区中没有换行符。
但现在我们使用
N
命令将第二行添加到缓冲区中:$ echo "line 1
$ This is line 2" | sed -n '1{N; p}'
> line 1
> This is line 2
现在我们在缓冲区中有 2 行,我们用
p
打印它们。 .$ echo "line 1
$ This is line 2" | sed -n '1{N; P}'
> line 1
我们再次在缓冲区中有 2 行,但我们只打印了第一行,因为我们使用的是
P
而不是 p
.
关于shell - sed中p和P有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20194488/