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)