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
trouprintfpara 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.