Sed em linha intercaladas [RESOLVIDO]

1. Sed em linha intercaladas [RESOLVIDO]

Cesar Rizzo
cesarzz

(usa CentOS)

Enviado em 25/03/2020 - 11:54h

Olá.

Como faço no SED para substituir palavras em linhas intercaladas?

Por exemplo:
sed '2s/antigo/novo/' arquivo.txt
Nesse caso acima, substituo somente na linha 2.

E quando eu precisar de intervalo, sei que é 2,5s por exemplo.

E em linhas intercaladas ???
Somente linha 2 e 5.

Obrigado;
Cesar


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/03/2020 - 19:24h


cesarzz escreveu:

Olá.

Como faço no SED para substituir palavras em linhas intercaladas?

Por exemplo:
sed '2s/antigo/novo/' arquivo.txt
Nesse caso acima, substituo somente na linha 2.

E quando eu precisar de intervalo, sei que é 2,5s por exemplo.

E em linhas intercaladas ???
Somente linha 2 e 5.

Obrigado;
Cesar

Segue.
sed '2s/Antigo/Novo/;5s/Antigo/KU/' dados.txt 



______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________

3. Re: Sed em linha intercaladas

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 25/03/2020 - 19:32h

Use o acento til:
sed 'início~intervalo s/antigo/novo/'

Exemplo:
$ cat file.txt 
1 abc def
2 abc def
3 abc def
4 abc def
5 abc def
6 abc def
7 abc def
8 abc def
9 abc def

$ sed '0~2 s/abc/xyz/' file.txt
1 abc def
2 xyz def
3 abc def
4 xyz def
5 abc def
6 xyz def
7 abc def
8 xyz def
9 abc def

Ou seja, o zero indica para começar a contagem das linhas do início do arquivo (a partir da primeira linha). O til "~" indica o intervalo, que no caso é 2. A cada duas linhas ele faz a substituição "s/abc/xyz".

Contando com a primeira linha e pulando intervalos de 3:
$ sed '1~3 s/abc/xyz/' file.txt
1 xyz def
2 abc def
3 abc def
4 xyz def
5 abc def
6 abc def
7 xyz def
8 abc def
9 abc def


Outra forma é usar o "n":
sed 's/abc/xyz/;n;n' file.txt 

Cada "n" pula uma linha!


4. Re: Sed em linha intercaladas

Rogerio
RogerDez

(usa Outra)

Enviado em 26/03/2020 - 07:05h

esse sed é uma loucura de bom!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts