Remover espaços iniciais: sed "s/^ *//"
Remover espaço em branco inicial: sed "s/^[[:space:]]*//"
Remova os espaços e guias principais: sed "s/^[ \t]*//"
(funciona no GNU sed) ou% sed 's/^[[:blank:]]*//'
(funciona com qualquer sed
) ou sed $'s/^[ \t]*//'
(no ksh / Bash / etc. para fornecer uma guia literal para sed
)
Como dito nos comentários, o especificador /g
não faz nada, já que o início da linha aparece apenas uma vez na linha, e mesmo /g
não repete o padrão mais de um. Você precisaria adicionar uma ramificação condicional explicitamente para repetir a substituição: sed -e :a -e 's/^ //' -e ta
^ *
corresponde à string vazia (sem espaços) também, mas isso não importa aqui. Se você quiser corresponder linhas que tenham pelo menos um espaço, use ^ *
(espaço duplo) ou ^ +
em regex estendido. Por exemplo. para alterar todos os recuos para exatamente dois espaços, use sed -e 's/^ */ /'
ou sed -Ee 's/^ +/ /'
( -E
é suportado em, por exemplo, GNU e FreeBSD)