usando GNU SED para comentar uma linha e adicionar uma nova linha

usando GNU SED para comentar uma linha e adicionar uma nova linha

Digamos que eu queira editar o arquivo /etc/ssh/sshd_config no RHEL 7 para proteger nossa configuração ssh.

Quero substituir, vamos pegar a linha Ciphers, por exemplo, mantendo o original no lugar e comentando. Eu também quero ser capaz de descodificar a menor parte possível da string para evitar que o Red Hat a quebre toda vez que atualizar o rpm/instalar iso.

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

Deve se tornar...

#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789 etc...

Eu tentei encontrar/adicionar nova linha em um arquivo de teste onde o nome do arquivo é testfile e o conteúdo é Este é meu arquivo de teste. Tentei adicionar Não, não é como uma nova linha e falhei miseravelmente.

sed -i '/This is my test file./aNo it's not.' testfile

Como eu faria isso e, mais importante, quais são os conceitos-chave por trás disso?

Responder1

Eu tentei com o comando sed abaixo e funcionou perfeitamente

comando

sed -i '/^Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-c/s/.*/#&\nCiphers abc-123,def-456,ghi-789/g' filename

saída

#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789

Responder2

sed -i -n 'p; s/^Ciphers/#&/p' /etc/ssh/sshd_config

-ino lugar

-nnão imprime nada, a menos que seja explicitamente impresso

/pno final da string de pesquisa força a impressão, substituindo efetivamente -na string correspondente

informação relacionada