how to do both simultaneously
Você não pode escrever linhas do buffer de texto para algum comando stdin
e ler seu stdout
de volta, substituindo as linhas originais, de uma só vez.
ed
claramente não foi projetado para fazer isso tipo de coisa ... Tente vim
.
Dito isso, você sempre pode usar algumas contorções como ed
dentro de ed
, por exemplo, abra o arquivo, exclua essas linhas do buffer de texto, processe-as por meio de outra invocação de ed
(que lê do arquivo original e não do buffer atual) cuja saída você leu no buffer antes do intervalo original de linhas:
ed -s infile
5,8d
4r ! ed -s infile<<<$'5,8w !sort -n\nq'
,p
q