como substituir o texto inteiro no arquivo

0

eu preciso excluir os certificados e chaves da raiz do arquivo, mas parece que não consigo fazer isso com sed corretamente.

o arquivo é algo assim:

here
there


<ca>
sdasd
dasda
</ca>
<cert>
asasda
asa
</cert>
<key>
asdadsas
</key>

Preciso excluir tudo de ca para key

    
por Vitalik Jimbei 22.06.2017 / 09:28

2 respostas

3

Para excluir de <ca> to </cert> , você precisará fugir do / dentro de </cert>

sed '/<ca>/,/<\/cert>/d' file

ou use um delimitador alternativo, por exemplo,

sed '\#<ca>#,\#</cert>#d' file

Ex.

$ sed '\#<ca>#,\#</cert>#d' yourfile
here
there


<key>
asdadsas
</key>

Em ambos os casos, adicione a opção -i ou --in-place para editar o arquivo no lugar.

    
por steeldriver 22.06.2017 / 09:57
2

perl pode fazer a correspondência de múltiplas linhas com -0

perl -0pe 's/\n\<ca\>(.*\n)*?\<\/key\>//' file

adicione -i para editar o arquivo no lugar.

    
por RoVo 22.06.2017 / 09:54