2012-07-28 9 views
8

Necesito ayuda con el uso de sed para comentar una línea coincidente y 4 líneas que la siguen. en un archivo de texto.sed - comente una línea coincidente y x líneas después de ella

mi archivo de texto es como sigue:

[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 

Quiero prefijo # para todas las líneas que tiene el texto '[myprocess' y 4 líneas que le sigue salida esperada:

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

Agradecemos enormemente su ayuda en esto.

Respuesta

13

Usted puede hacer esto mediante la aplicación de una expresión regular para un conjunto de líneas:

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

Esto coincide con las líneas 'myprocess' y las 4 líneas después de ellos. Para esas 4 líneas, inserta un '#' al comienzo de la línea.

(creo que esto podría ser una extensión de GNU - no es de ninguna de las Cheatsheets "sed un trazador de líneas" que conozco)

+0

'sed: -e expresión # 1, char 12: inesperado '',' :-( – Mausy5043

+0

¿Qué versión de ver ? Lo más probable es que sea viejo o no tenga las extensiones de gnu. – Flexo

+0

sed 4.2.2. Es el valor predeterminado de Debian así que, sí, probablemente falten extensiones de GNU – Mausy5043

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