Estoy tratando de encontrar estas tres líneas:
<!--
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-->
y reemplazarlos con:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Cuando lo intento
sudo sed -i 's:<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />:' /myfile.xml
No lo encuentra, también intenté poner \ n en él, pero aún no funcionó:
sudo sed -i 's:<!--\n <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />\n -->:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />:' /myfile.xml
Estos no arrojan ningún error, simplemente no descomenta la línea. Cualquier consejo ayudaría, gracias!
Aquí hay una descripción de los comandos multilínea en SED: http://docstore.mik.ua/orelly/unix/sedawk/ch06_01.htm
Es un dolor en el trasero. Es posible que desee seguir los consejos de Eduardo y usarlos
perl -i -p -e
en su lugar.fuente
/<\!--/
: cadena coincidente:X
: esta es una etiqueta para el comando de rama "b"/-->/
: cadena coincidentes@...@...@p
: tira "<! -", "->" e imprime el resultadod
: borra el espacio del patrón y comienza un nuevo cicloN
: si no coincide con / -> / luego agregue una líneabX
: ramifica a: etiqueta Xp
: simplemente imprime una cadena que no coincide con / <! - /y este segundo método es una simple sustitución literal de copiar y pegar para archivos de texto de tamaño pequeño (se necesita un archivo de script de shell)
fuente