Como usar o sed com muitos caracteres extras no caminho? [duplicado]

0

É possível usar sed para substituir o exemplo inteiro da linha entre colchetes abaixo? Parece que estou encontrando problemas para descobrir um delimitador a ser usado, pois / e muitos outros caracteres especiais existem na linha real que desejo substituir.

Linha que precisa ser substituída:

Este é um exemplo aleatório, pois a linha real que eu quero usar é muito menos amigável aos olhos.

[...]
<example>=(a,b,c);{!@#$%^&*?/};</example>
[...]

Se houver alguma ferramenta mais adequada para isso, por favor me avise. Qualquer ajuda seria muito apreciada.

    
por rbhusky 08.11.2016 / 02:02

1 resposta

0

Se você deseja substituir somente a linha inteira , é possível usar uma solução alternativa simples de maneira semelhante a esta resposta .

Aqui está sua linha:

<example>=(a,b,c);{!@#$%^&*?/};</example>

A solução é imprimir essa linha antes do resto do arquivo, depois usar Sed para alterar qualquer linha que seja inteiramente composta por uma correspondência exata da primeira linha.

{ printf '%s\n' '<example>=(a,b,c);{!@#$%^&*?/};</example>'; cat somefile;} |
  sed -e '1h;1d;G;s/^\(.*\)\n$/text to change to/;t' -e 's/\n.*$//'

No entanto, você deve aprender quais caracteres precisam escapar em uma regex , de qualquer forma.

    
por 08.11.2016 / 02:38