SED - char 4: comando 'não terminado'

1

Estou recebendo o erro abaixo no meu script. Você pode ajudar a identificar o problema?

sed "s/$(printf "2")/ /g" file1 > file1_new
sed: -e expression #1, char 4: unterminated 's' command

Mas este está funcionando bem sem problemas:

sed "s/$(printf "0")/ /g" file1 > file1_new
cat file1_new > file1
rm file1_new

Qual é o problema com o primeiro?

    
por Sandosh Kumar P 07.03.2017 / 17:22

2 respostas

0

Parece que sed não joga muito bem com substituições binárias. Eu acabei de testar o que você está fazendo com tr e parece estar funcionando. É realmente muito fácil fazer com um comando, também:

cat /path/to/file1 | tr "$(printf "20")" " " > /path/to/file1_new

tr é uma ferramenta para "traduzir" o conjunto de caracteres em seu primeiro argumento para o conjunto em seu segundo argumento (que é estendido para corresponder ao comprimento do primeiro conjunto, se necessário). Então, nós simplesmente traduzimos cada caractere em um espaço, como você estava tentando fazer com sed .

    
por 07.03.2017 / 17:42
0

Observe que você pode acessar números octais / hexadecimais diretamente em sed como:

sed -e 's/\o302/ /g'  #in octal
sed -e 's/\xC2/ /g'   #in hex
    
por 07.03.2017 / 18:06