Aqui está uma maneira:
sed 's/\prc{\([^}]*\)}/ %/g'
Isto irá capturar tudo dentro dos parênteses após \prc
e salvá-lo no grupo 1
, você pode usar isso para substituir o comando pelo conteúdo dos parênteses. [^}]*
simplesmente leva tudo, exceto o colchete de fechamento aqui. g
significa “globalmente” e significa que substituirá todas as ocorrências do padrão na linha em vez de apenas a primeira - você desejará isso para cada expressão no seu caso.
Quanto ao outro, basta usar vários grupos:
sed 's/\mErrRange{\([^}]*\)}{\([^}]*\)}{\([^}]*\)}/ ± /g'
Você pode combinar quantas dessas expressões desejar, mas fica fácil de entender. Recomendo escrever um script sed
com uma expressão por linha da seguinte forma:
#!/bin/sed -f
s/\prc{\([^}]*\)}/ %/g
s/\mErrRange{\([^}]*\)}{\([^}]*\)}{\([^}]*\)}/ ± /g
Salvar como, por exemplo, script.sed
, torne-o executável com chmod +x /path/to/script.sed
e execute-o com /path/to/script.sed
.
Exemplo de execução
$ /path/to/script.sed <hello.txt
This is my \textbf{text} where there are about 5 % commands, i.e. 30 ± 20 m.
Eu deixo o shell abrir arquivos de entrada o mais rápido possível, portanto <hello.txt
ao invés de apenas hello.txt
(que também funciona!). Se você está interessado em saber o que exatamente faz, eu recomendo esta resposta em unix.SE .