A sintaxe \t
para um caractere de tabulação no sed não é padrão. Essa fuga é uma extensão de GNU sed . Você encontra muitos exemplos on-line que o utilizam porque muitas pessoas usam o GNU sed (é a implementação do sed no Linux não integrado). Mas OS X sed , como outros * BSD sed , não suporta \t
para a guia e, em vez disso, trata \t
como significando barra invertida seguida por t
.
Existem muitas soluções, como:
-
Use um caractere de tabulação literal.
sed -i.bak 's/ / /' file.txt
-
Use
tr
ouprintf
para produzir um caractere de guia.sed -i.bak "s/$(printf '\t')"/ /' file.txt sed -i.bak "s/$(echo a | tr 'a' '\t')"/ /' file.txt
-
Use a sintaxe de string do bash que permite a saída de barras invertidas .
sed -i.bak $'s/\t/ /' file.txt
-
Use Perl, Python ou Ruby. O snippet Ruby que você postou funciona.