Índice Anterior Próxima

Sed

Está gostando da leitura? Está aprendendo? Compre o livro novo que traz mais conteúdo, texto atualizado e ilustrações!
característica	como fazer
--------------------------------------
busca   	/endereçamento/
substituição	comando s///
divisão 	-
ER crua 	já é crua
ignore M/m	modificador I
global  	modificador g

Bem, eu sou meio suspeito para falar do sed, pois é meu programa preferido, então vou tentar ser breve.

O sed é um editor de texto não-interativo, orientado a linha, que usa uma linguagem de programação em que se definem as regras de edição. Pode-se usar ERs delimitadas por barras para endereçar as linhas nas quais o comando será aplicado.

sed '1,/[0-9]\{3\}/d' arquivo.txt

Este sed lê dados do arquivo.txt e apaga (comando d) desde a primeira linha, até a linha que contenha 3 números seguidos, jogando o resultado na tela. Se quiser gravar o resultado, redirecione-o para outro arquivo, não o próprio arquivo.txt .

A substituição de padrões é feita com o comando s/// , em que as barras separam a ER do trecho substituto. Como exemplo, vamos trocar duas letras de lugar:

prompt$ echo ZZzz | sed 's/\([a-z]\)\1/./Ig'
..

Note lá no final os modificadores I para ignorar a diferença de maiúsculas e minúsculas e o g para substituir todas as ocorrências encontradas.

O sed também é útil para testes dinâmicos de ERs, em que você digita o texto e ele aplica a ER na hora. Basta omitir o nome do arquivo, então ele esperará os dados do teclado. Assim:

prompt$ sed 's/$/!!!/; s/[0-9]\+//g'
exclamação no fim
exclamação no fim!!!
e números 1, 23 e 4567 são apagados
e números ,  e  são apagados!!!
^c

Então após cada linha que você digita, o sed já a edita e coloca o resultado embaixo. Note que temos dois comandos de substituição que são aplicados seqüencialmente, então testes de várias ERs em um mesmo texto são triviais.

Bom para testes rápidos de ERs recém-construídas, ou até para tentar adivinhar o que faz uma ER pronta que você não conseguiu entender direito.

Mais informações sobre obtenção e uso do sed você encontra no sed-HOWTO (em português):


Índice Anterior Próxima