Como avaliar caracteres especiais para vê-los no editor de texto?

0

Digamos que eu tenha um texto "line1 \ n \ nline2 \ nline3" e quero vê-lo em um console ou canalizá-lo para um editor de texto para que pareça

line1

line2
line3

Então personagens especiais foram avaliados. Posso fazer isso sem regex substituindo?

    
por Nicholas Asimov 18.11.2016 / 16:36

2 respostas

1

Use o eco in-line:

$ echo -e "line1\n\nline2\nline3"
line1

line2
line3
    
por 18.11.2016 / 16:41
2

O Bash tem printf embutido, com suporte para %b para expandir barras invertidas e para %q formatar uma string para que possa ser usado em comandos shell sem aspas (ou seja, escapar de todos os caracteres que os shells tendem a tratar especialmente com barras invertidas).

Em outras palavras, no Bash, você pode usar

printf '%b\n' 'line1\n\nline2\nline3'

para obter

line1

line2
line3

Se você não quiser a nova linha seguindo line3 , use printf '%b' 'line1\n\nline2\nline3' .

O inverso ( %q ) é igualmente útil,

printf '%q' '(foo $bar baz]'

exibindo

\(foo\ \$bar\ baz\]

Se você tiver uma variável Bash contendo uma string com barras invertidas, por exemplo

myvar='line1\n\nline2\nline3'

você pode expandir as seqüências de escape usando

mytext=$(printf '%b' "$myvar")

Se você quiser apenas especificar uma string literal com seqüências de escape, use $'' :

mytext=$'line1\n\nline2\nline3'
    
por 18.11.2016 / 17:10