Na prática, isso não muda muito. Na verdade, a primeira variante limita você a um arquivo, enquanto o segundo permite que o sed concatene várias entradas para uma saída, bem como use sua opção de edição no local.
A diferença técnica é que o primeiro método com <
e >
depende exclusivamente do redirecionamento de shell, um recurso genérico pelo qual o Unix no início era famoso - devido à sua simplicidade e por ser completamente genérico e reutilizável em vários programas: o shell abre o arquivo e entrega a você um descritor de arquivo.
(Outros sistemas da época ou não tinham redirecionamento completo ou precisavam de vários comandos para ativá-lo.)
O último também redireciona a saída, mas não a entrada. Em vez disso, ele pede ao próprio sed para abrir o arquivo de entrada - algo que todo programa tem que implementar sozinho, possivelmente usando sintaxes inconsistentes que você teria que aprender e reaprender; por exemplo. uma ferramenta pode querer --input=original.txt --output=processed.txt
e outro -in original.txt
. Mas OTOH, como eu mencionei, isso também é mais flexível, pois você não está limitado a uma entrada somente leitura.
cat foo | bar
ou tirarem sarro de Janelas e amp; Usuários de VMS por não serem "iluminados com a Filosofia Unix".