coloque a aba antes de cada linha de saída no AIX / ksh

1
0:root@SERVER:/root # echo "something" | sed -e 's/^/\t/g'
tsomething
0:root@SERVER:/root # 

AIX / ksh .. por que não funciona? Eu só quero colocar uma "aba" antes de cada linha!

    
por LanceBaynes 11.12.2011 / 07:20

2 respostas

5

\t no lado direito de uma expressão sed não é portátil. Aqui estão algumas soluções possíveis:

shell POSIX

Lembre-se de que, como muitos shells armazenam suas strings internamente como strings, se a entrada contiver o caractere nulo ( %code% ), isso pode fazer com que a linha termine prematuramente.

echo "something" | while IFS= read -r line; do printf '\t%s\n' "$line"; done

awk

echo "something" | awk '{ print "\t" $0 }'

Perl

echo "something" | perl -pe 'print "\t"'
    
por 11.12.2011 / 09:08
1

Se o seu shell é bash, ksh93 ou zsh, você pode usar o shell escaping para colocar uma guia literal no comando sed. A sintaxe de cotação $'…' trata todos os caracteres dentro das aspas literalmente, exceto barras invertidas e aspas simples. Você pode usar as escapes de barra invertida usuais dentro dessas citações.

sed -e $'s/^/\t/g'
    
por 11.12.2011 / 23:58

Tags