Digamos que quiero editar el archivo /etc/ssh/sshd_config en RHEL 7 para proteger nuestra configuración ssh.
Quiero reemplazar, tomemos la línea Ciphers, por ejemplo, manteniendo el original en su lugar y comentándolo. También quiero poder eliminar la parte más pequeña posible de la cadena para evitar que Red Hat la rompa cada vez que actualicen rpm/install iso.
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debe convertirse...
#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789 etc...
Intenté buscar/agregar una nueva línea en un archivo de prueba donde el nombre del archivo es testfile y el contenido es Este es mi archivo de prueba. Intenté agregar No, no es como una nueva línea y fallé estrepitosamente.
sed -i '/This is my test file./aNo it's not.' testfile
¿Cómo haría eso y, lo que es más importante, cuáles son los conceptos clave detrás de esto?
Respuesta1
Lo intenté con el siguiente comando sed y funcionó de maravilla
dominio
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
producción
#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789
Respuesta2
sed -i -n 'p; s/^Ciphers/#&/p' /etc/ssh/sshd_config
-i
en su lugar
-n
no imprime nada a menos que se imprima explícitamente
/p
al final de la cadena de búsqueda fuerza la impresión, anulando efectivamente -n
la cadena coincidente