Portável.
TAB=$(printf '\t')
sed "s/^ */$TAB/" < file.in > file.out
Alguns shells ( ksh93
, zsh
, bash
, mksh
e FreeBSD sh
, pelo menos) também suportam uma forma especial de aspas ( $'...'
) onde itens como \t
são expandidos.
sed $'s/^ */\t/' < file.in > file.out
O shell fish
expande os que estão fora das citações:
sed 's/^ */'\t/ < file.in > file.out
Algumas implementações de sed
como o GNU sed
também reconhecem \t
como significando TAB por si mesmas. Então, com isso, isso também funcionaria:
sed 's/^ */\t/' < file.in > file.out
Portável, awk
expande \t
dentro de suas aspas duplas. E também usa expressões regulares estendidas, portanto, é possível usar x+
no lugar de xx*
:
awk '{sub(/^ +/, "\t"); print}' < file.in > file.out