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".