2012-07-28 199 views
8

我需要使用sed來註釋符合它的行和4行的幫助。 在文本文件中。sed - 在它後面註釋匹配的行和x行

我的文本文件是這樣的:

[myprocess-a] 
property1=1 
property2=2 
property3=3 
property4=4 

[anotherprocess-b] 
property1=gffgg 
property3=gjdl 
property2=red 
property4=djfjf 

[myprocess-b] 
property1=1 
property4=4 
property2=2 
property3=3 

我想前綴#具有文本中的所有行它後面 預期輸出 '[myprocess' 和4線:

#[myprocess-a] 
#property1=1 
#property2=2 
#property3=3 
#property4=4 

[anotherprocess-b] 
property1=gffgg 
property3=gjdl 
property2=red 
property4=djfjf 

#[myprocess-b] 
#property1=1 
#property4=4 
#property2=2 
#property3=3 

非常感謝你的幫助。

回答

13

您可以通過應用正則表達式來一組線的做到這一點:

sed -e '/myprocess/,+4 s/^/#/' 

這符合與「myprocess」之後他們4行線。對於這4行,它在行的開頭插入一個'#'。

(我認爲這可能是一個GNU擴展 - 這不是在任何「sed的一個班輪」備忘我所知道的)

+0

'的sed:-e表達#1,炭12:意想不到 ''':-( – Mausy5043 2017-05-13 14:07:35

+0

什麼的看到版本?很可能是舊的或者沒有得到gnu擴展 – Flexo 2017-05-13 19:28:36

+0

sed 4.2.2。這是Debian的默認設置,所以可能缺少GNU擴展 – Mausy5043 2017-05-14 08:03:29

2
sed '/\[myprocess/ { N;N;N;N; s/^/#/gm }' input_file