Eu já postei adicionar caractere de escape com bash . Preciso de um script para isso para cada linha em um arquivo que começa com {@codeBlock
então
{@codeBlock: TEstBigquerry.buildPicks}
deveria parecer
\{@codeBlock:\ TEstBigquerry.buildPicks\}
Meu roteiro
#!/bin/bash
file=clfields.mdx
while read -r line; do
if [[ "${line::11}" == '{@codeBlock' ]]; then
printf '%q\n' "$line"
else
echo "$line"
fi
done < clfields.mdx
A saída do terminal está ok, mas o arquivo continua o mesmo. Por quê?
Você pode fazer a mesma coisa que no post vinculado (imprimir com
printf '%q\n'
), mas testar cada linha:Explicação:
IFS= read -r line
lê a linha inteira na variávelline
.${line::11}
pega os primeiros 11 caracteres deline
.< input_file.txt
envia o conteúdo do seu arquivo de entrada para awhile
instrução; você também pode fazercat input_file.txt | while read
... para fazer a mesma coisa.Usando qualquer awk:
Se você tiver o GNU awk, poderá usá-lo
awk -i inplace 'script' file
para modificar o arquivo de entrada, ou com qualquer awk (ou qualquer outro comando)awk 'script' file > tmp && mv tmp file
.Com
sed
:ou