Como fazer "quit" no SED
Dica publicada em Shell Script / Expressões Regulares
Como fazer "quit" no SED
Mais uma dica rápida e excêntrica sobre o sed. Nesta demonstrarei como interromper o sed quando ocorrer algum evento.
Para ficar mais fácil de entender, vou partir para um exemplo prático. Dado o arquivo "texto.txt" abaixo:
Quero substituir "Banana" por "Limão" enquanto não aparecer a palavra "Sair". Quando encontrá-la, parar de processar.
sed 's/Banana/Limão/g ; /Sair/q' texto.txt
1 Limão
2 Limão
3 Limão
4 Limão
5 Limão
6 Limão
7 Limão
8 Limão
9 Limão
10 Sair
O "pulo do gato" no caso está em '/Sair/q', que significa que quando o sed encontrar o padrão /Sair/, irá fazer um quit (q).
Para ficar mais fácil de entender, vou partir para um exemplo prático. Dado o arquivo "texto.txt" abaixo:
1 Banana
2 Banana
3 Banana
4 Banana
5 Banana
6 Banana
7 Banana
8 Banana
9 Banana
10 Sair
11 Banana
12 Banana
13 Banana
14 Banana
15 Banana
16 Banana
17 Banana
18 Banana
19 Banana
20 Banana
2 Banana
3 Banana
4 Banana
5 Banana
6 Banana
7 Banana
8 Banana
9 Banana
10 Sair
11 Banana
12 Banana
13 Banana
14 Banana
15 Banana
16 Banana
17 Banana
18 Banana
19 Banana
20 Banana
Quero substituir "Banana" por "Limão" enquanto não aparecer a palavra "Sair". Quando encontrá-la, parar de processar.
sed 's/Banana/Limão/g ; /Sair/q' texto.txt
1 Limão
2 Limão
3 Limão
4 Limão
5 Limão
6 Limão
7 Limão
8 Limão
9 Limão
10 Sair
O "pulo do gato" no caso está em '/Sair/q', que significa que quando o sed encontrar o padrão /Sair/, irá fazer um quit (q).
Boa dica. Vai agregar meu conhecimento.
___________________________________
Conhecimento não se Leva para o Túmulo.