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