como substituir a terceira linha em um arquivo usando sed?

1

Eu preciso alterar uma variável em um arquivo usando um script bash, acho que sed é o caminho a percorrer, mas não consigo descobrir a expressão regular.

Eu tentei substituir um caractere no arquivo, mas entendi que o que estou substituindo também mudará.

Você pode ajudar a substituir a terceira e a quarta fileira em um arquivo usando sed?

um exemplo do que eu estou me referindo a

mode blender 
type kitchen 
blender.net 5.5.5.5.6:33 blender blender 
blender.com 5.5.5.5.5:33 blender blender

Eu quero poder mudar toda a terceira e quarta linha com

blender.net x.x.x.x:33 blender blender
    
por Vitalik Jimbei 24.04.2016 / 11:33

1 resposta

1

Você pode indicar um intervalo de linhas para operar em sed , por exemplo, no seu caso 3,4 indicando a linha 3 para (e) 4:

sed -r '3,4 s/.*/blender.net x.x.x.x:33 blender blender/' file.txt

Exemplo:

$ cat file.txt
mode blender 
type kitchen
blender.net 5.5.5.5.6:33 blender blender
blender.com 5.5.5.5.5:33 blender blender

$ sed -r '3,4 s/.*/blender.net x.x.x.x:33 blender blender/' file.txt
mode blender 
type kitchen
blender.net x.x.x.x:33 blender blender
blender.net x.x.x.x:33 blender blender

Aqui estamos fazendo a operação de substituição desejada na linha 3 e 4.

De uma variável:

$ var=5.5.5.5.6:3

$ sed -r "3,4 s/.*/blender.net $var blender blender/" file.txt
mode blender 
type kitchen
blender.net 5.5.5.5.6:3 blender blender
blender.net 5.5.5.5.6:3 blender blender
    
por heemayl 24.04.2016 / 11:46