edição de texto usando o comando tr

1

Ao usar o comando:

tr -s '\n' ' '< test1

em que test1 é um arquivo de texto.

Se test1 for escrito de maneira que contenha novas linhas (caracteres de alimentação de linha) e não \ n (barra invertida-n), a resposta vem como esperado, ou seja, todas as novas linhas são substituídas por um único espaço.

Mas se disser que o test1 é formatado de tal forma que contenha \ n (barra invertida-n) e não uma nova linha, então executar o comando \ n não é substituído por um único espaço, por exemplo. se test1 contém

hello \n\n\n how are \n\n you

a saída é

hello \n\n\n how are \n\n you

e não

hello   how are   you
    
por codelec 21.12.2014 / 18:43

1 resposta

2

Então, a questão é como é que um substitui literalmente a barra invertida-n?

Se assim for, não pode ser feito com tr, pois tr só funciona em caracteres únicos. Veja como fazer isso em sed (editor de string):

$ cat test1
hello \n\n\n how are \n\n you
$ sed -e 's/\n/ /g' < test1
hello     how are    you

observe a barra invertida extra necessária para informar ao sed que estamos procurando por uma barra invertida literal aqui e para não interpretar '\ n' como um caractere de feed de linha.

    
por Kim Phillips 21.12.2014 / 19:15