O problema pode ser causado por retornos de carro no script ed . Copiar e colar uma parte do texto não os transfere para o processo ed em execução, mas se eles estiverem em um arquivo de script, posso entender que ed ficou confuso.
O GNU ed sai com um status de saída de 2 "para indicar um corrompimento ou
arquivo de entrada inválido ", que suporta a especulação de que pode ser um arquivo de script formatado pelo DOS. No entanto, o padrão ed no macOS é BSD ed e os códigos de saída não estão adequadamente documentados no manual. ) source, parece que a maioria dos erros que causam este código de saída tem a ver com a leitura do arquivo de script.
Para remover o \r antes de cada nova linha (executará uma edição no local):
printf ',s/\r$//\nwq\n' | ed -s file
Os retornos de carro teriam chegado de ter escrito o script em um editor do Windows, por exemplo, ou em qualquer editor que salvasse o arquivo como um arquivo de texto formatado em DOS.
Pergunta 1: Tenho certeza que sim.
A pergunta 2 tem a ver com as mensagens concisas de diagnóstico que ed produz ( ? , na maior parte do tempo). Se você iniciar seu script de edição com uma chamada para a função H , qualquer erro será detalhado em vez do simples ? , como se você tivesse digitado h após um erro. Isso não ajudará se houver retornos de carro no final de cada linha, já que isso impediria que ed reconhecesse H como um comando válido.
Pergunta 3: Eu usei o GNU ed (1.14.2) e o BSD ed no OpenBSD, e eu não vi esse problema causado pela alimentação dos comandos ed "muito rapidamente".