Você não precisa do cat
. sed
aceita felizmente o nome do arquivo como argumento:
sed 's/^ *//' <file>
Se você usar o GNU sed, poderá usar a opção -i
ou --in-place
para editar
arquivo em vigor:
sed -i 's/^ *//' <file>
Para responder à pergunta, você pode obter o "buffer completo de arquivos" usando a ferramenta
sponge
do pacote moreutils . Usando
sponge
você pode fazer:
<command> <file> | sponge <file> # or
<command1> < <file> | <command2> | sponge <file>
Usando seu exemplo sed
, isso se torna:
sed 's/^ *//' <file> | sponge <file>