Limitando o alcance do SED por números de linha
Nessa dica veremos como limitar expressões do
sed de acordo com números de linha do arquivo. Mostrando na prática ficará mais fácil de explicar...
Dado o seguinte arquivo "texto.txt":
1 Banana
2 Banana
3 Banana
4 Banana
5 Banana
6 Banana
7 Banana
8 Banana
9 Banana
10 Banana
11 Banana
12 Banana
13 Banana
14 Banana
15 Banana
16 Banana
17 Banana
18 Banana
19 Banana
20 Banana
Quero substituir a palavra "Banana" por "Maça", mas apenas entre as linhas 5 e 10:
sed '5,10 s/Banana/Maça/' texto.txt
1 Banana
2 Banana
3 Banana
4 Banana
5 Maça
6 Maça
7 Maça
8 Maça
9 Maça
10 Maça
11 Banana
12 Banana
13 Banana
14 Banana
15 Banana
16 Banana
17 Banana
18 Banana
19 Banana
20 Banana
Se eu quiser substituir "Banana" por "Laranja" da linha 11 até o final do arquivo, mas não sei qual o número da última linha:
sed '11,$ s/Banana/Laranja/' texto.txt
1 Banana
2 Banana
3 Banana
4 Banana
5 Banana
6 Banana
7 Banana
8 Banana
9 Banana
10 Banana
11 Laranja
12 Laranja
13 Laranja
14 Laranja
15 Laranja
16 Laranja
17 Laranja
18 Laranja
19 Laranja
20 Laranja
Também é possível combinar substituições e ranges de linhas, separando as expressões por ponto e vírgula:
sed '5,10 s/Banana/Maça/ ; 11,$ s/Banana/Laranja/' texto.txt
1 Banana
2 Banana
3 Banana
4 Banana
5 Maça
6 Maça
7 Maça
8 Maça
9 Maça
10 Maça
11 Laranja
12 Laranja
13 Laranja
14 Laranja
15 Laranja
16 Laranja
17 Laranja
18 Laranja
19 Laranja
20 Laranja
Até a próxima!
Outras dicas deste autor
Como gravar uma ISO no pendrive/USD externo
O comando split
SED - texto para maiúsculas, minúsculas, pascal case e camel case
O inutilitário Gtick
Instalando Duke Nukem 3D no GNU/Linux
Leitura recomendada
SED - texto para maiúsculas, minúsculas, pascal case e camel case
Como remover parêntesis dos nomes de arquivos
Como fazer "quit" no SED
Executando comandos em looping no shell
Baixando todos os arquivos de uma URL com o wget
Comentários
Muito Bom.
___________________________________
Conhecimento não se Leva para o Túmulo.