
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!