2012-07-28 16 views
8

Takip eden bir satır ve onu takip eden 4 satır yorumlamak için sed kullanarak yardım gerekiyor. Bir metin dosyasında .sed - bir satır ve sonra x satırları yorum

benim metin dosyası şu şekildedir:

#[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-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 

tüm hatlar metni sahip # önek o beklenen çıkışı izler '[myprocess' ve 4 sıra istiyorum Bu konuda yardımlarınız için çok teşekkür ederiz.

cevap

13

Sen bir dizi çizgi için normal bir ifade uygulayarak bunu yapabilirsiniz:

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

Bu 'myprocess' ve onlardan sonra 4 hatlı çizgileri ile eşleşir. Bu 4 satır için, satırın başına bir '#' ekler.

(Bu bir GNU olabileceğini düşünüyorum - bildiğim "sed bir liner" cheatsheets hiçbirinde değil) dize birleştirme ve awk yılında varsayılan eylemi kullanma

+0

'sed -e ifade 1., karakter 12: bakınız beklenmedik ''' :-( – Mausy5043

+0

hangi sürümü Oranlar ya eskidir ya da gnu uzantılarına sahip değildir – Flexo

+0

sed 4.2.2 Bu Debian varsayılanıdır, evet, muhtemelen GNU uzantıları eksik – Mausy5043

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