parte II: Enviando dados pro sed
parte III: Selecionando as linhas em que vamos trabalhar
parte IV: Substituindo
parte V: Scripts em sed
parte VI: Expressões Regulares
parte VII: Referenciando com &
parte VIII: Back Reference
parte IX: Hold Space ou Espaço Reserva
parte X: Por onde prosseguir e Considerações Finais
parte XI: Comandos de uma linha só
Vamos mostrar como especificar endereços (linhas, strings, trechos de string etc.) pro sed trabalhar.
Para efeitos de estudo, salve o arquivo como 'teste.txt' e nele digite
1
2
3
4
5
6
Para apagar a linha n, use 'nd' ao invés de somente 'd' como foi mostrado antes:
cat teste.txt | sed '1d'
Nesse caso, o sed percorre cada linha e aplica o comando. O comando é 'caso a linha seja a primeira, apague-a'.
- Intervalo de endereço
Para definirmos um intervalo para o sed operar, colocamos o endereço do início separado do endereço do fim separado por vírgula.Por exemplo, vamos apagar da segunda até a quarta linha:
Sabendo que o sed trabalha de forma sequencial, sempre do início pro fim do arquivo, interprete o resultado de:cat teste.txt | sed '2,4d'
cat teste.txt | sed '4,2d'
Se quisermos apagar uma linha e as próximas 3, por exemplo, usamos '+3' como endereço:
cat teste.txt | sed '1,+3d'
Porém, se ao invés de apagar certas linhas quisermos apagar todas as outras, menos ela?
Simples, usamos o bom e velho operador de negação '!' após o endereçamento.
Vamos apagar todas, menos a primeira linha:
cat teste.txt | sed '1!d'
Todo, menos da terceira até a quinta linha:
cat teste.txt | sed '3,5!d'
ou
cat teste.txt | sed '3,+2!d'
- Endereços em forma de PA
Se lembra de PA, progressão aritmética?Por exemplo, uma PA de elemtno inicial 1 e razão 3: 1, 4, 7, 10...
Podemos usar isso em sed com o comando 'a~r', onde a é o número inicial e r a razão.
Exemplo:
cat teste.txt | sed '1~3d'
Muitas vezes, para vermos o que foi apagado, negamos o endereçamento:
cat teste.txt | sed '1~3!d'
Nenhum comentário:
Postar um comentário