Para quem não conhece, o ed é um editor de textos. Este editor usa as mesmas ERs (expressões regulares) usadas pelo editor vi. As ERs que o ed usa também são utilizadas por comandos, como o sed e o grep. O ed é muito utilizado na elaboração e desenvolvimento de scripts, por isso, é muito importante conhecê-lo, principalmente para profissionais que utilizam Shell Script.
Vamos ver alguns exemplos:
Temos um arquivo de texto chamado gnu.txt:
A Free Software Foundation anunciou na terça-feira que começará a adaptar regras para o desenvolvimento e uso de Software Livre, incluindo penalidades contra aqueles que registram patentes de programas ou usam tecnologia de combate à pirataria.
Vamos editar este arquivo:
# ed gnu.txt
Newline appended
245 1,$p
Explicando:
O arquivo tem 245 caracteres e pedimos ao ed que listasse (p) o arquivo da 1(1) até a última($) linha.
Para procurar palavras no arquivo usamos:
/palavra
Para pesquisar uma cadeia de caracteres no início da linha e somente no início, usamos o circunflexo (^). Exemplo:
/^Free
No exemplo acima, o ed procura a existência dos caracteres "Free" somente se eles ocorrerem no início da linha.
Para pesquisar uma cadeia de caracteres no final da linha, usamos o cifrão ($).
Exemplo:
/Free$
Outro caractere muito utilizado é o ponto (.), cuja finalidade é servir como uma espécie de coringa posicional. Exemplo:
/ca.eta
(aceita caneta, capeta, careta, etc)
Para trocarmos uma cadeia de caracteres por outra, usamos um "s" seguido da cadeia inicial entre duas barras (/) e da cadeia final. Exemplo:
s/Windows/Linux
No exemplo acima, estaremos trocando Windows por Linux. Mas somente a primeira linha em que ocorresse Windows seria alterada. Para alterarmos todas as linhas, usamos:
1,$ s/Windows/Linux
Para você globalizar a substituição, basta utilizar o caractere "g" no final da linha. Exemplo:
1,$ s/Windows/Linux/g
Caso você queira desfazer alguma alteração no arquivo, basta você utilizar o comando "u" (undo).
Isso são apenas algumas funções do ed. Caso você queira se aprofundar no assunto, veja o manual: