El contenido de mi filenamearchivo es el siguiente (por ejemplo):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
Quiero reemplazar el bloque de líneas entre STARTy ENDcon una sola palabra, por ejemplo con SINGLEWORD. Como abajo:
My block of line starts from here
SINGLEWORD
and end to here for example.
Puedo encontrar mi bloque de líneas con este comando:
grep -Pzo "START(.|\n)*END" filename
Y el resultado de ejecutar el comando anterior será así:
START
First line
second line
third line
END
Luego usé este comando para combinar todas las líneas en una sola línea:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
Entonces obtendré este resultado:
START First line second line third line END
Y con mi último comando los LAST_RESULTS | sed 's/.*/SINGLEWORD/'cambio "SINGLEWORD"y obtengo este resultado.
SINGLEWORD
Ahora lo que quiero es: ¿Cómo puedo usar este comando (o el comando de su sugerencia) y reemplazar (en su lugar) mi bloque de líneas a la palabra "SINGLEWORD"? Y el resultado final será como este archivo:
My block of line starts from here
SINGLEWORD
and end to here for example.
fuente

seddebería ser posible pero probablemente más difícil de leer (Mira esta pregunta )/,*,?) en el mismo y estas son solo ejemplo. y podrías explicar tu ordensed):\/,\*,\?perl -i -p0e 's/\/\*.*?\*\//SINGLEWORD/sm'. Debería funcionarMe preguntaba si esto es posible sin
perl,pythony otros. Y encontré esta solución usandosed:Explicación:
/START.*END/porSINGLEWORD, / g coincidencia global (tantas veces como sea posible)Fue encontrado aquí .
@KasiyA, ¡gracias, aprendí muchas cosas interesantes!
fuente