2013-11-25 95 views
2

任何人都可以解釋在Sed中pP之間有什麼區別嗎?sed中p和p有什麼區別?

假設在下面的文件中使用p和P打印包含gmail的行時給出了相同的o/p,那麼p和P之間的區別是什麼?

$ cat file 

Gmail 10 
Yahoo 20 
Rediff 18 

$ sed '/Gmail/p' abc.txt 
Gmail 10 
Gmail 10 
Yahoo 20 
Redif 18 

$ sed '/Gmail/P' abc.txt 
Gmail 10 
Gmail 10 
Yahoo 20 
Redif 18 

回答

5

p打印尋址線(S),而P僅打印所述第一部分(最多換行符\n)被尋址的線路的。如果緩衝區中只有一行,則pP是相同的,但應該使用邏輯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

0
+0

答案是waaaay更有建設性的,如果你想針的精確點不只是扔文本或一些通用異地人工牆。 – Kamiccolo

+0

解釋是充分和完整的,只是在回答之前(通過pfnuesel),這只是補充,如果某人不能讀這個,最好避免使用sed。但好的,我會避免給這種信息。 – NeronLeVelu

+2

通常,「僅鏈接」答案不是一個好主意,至少因爲鏈接很少像我們想的那樣穩定。不過,將鏈接作爲答案的一部分也討論了這一問題,這是一個絕妙的想法。 –

相關問題