![¿Cómo eliminar esta cadena de un archivo usando sed o perl?](https://rvso.com/image/109245/%C2%BFC%C3%B3mo%20eliminar%20esta%20cadena%20de%20un%20archivo%20usando%20sed%20o%20perl%3F.png)
Quiero eliminar esta cadena:
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Inicie sesión como usuario \"centos\" en lugar de como usuario \"root\".';echo;sleep 10"
en el siguiente archivo:
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Inicie sesión como usuario \"centos\" en lugar de como usuario \"root\".';echo;sleep 10" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCV9sc7lTrpAJb1UARLmNA08XD8Dy0hGJiX1E5qYk8MkH36xbBtcO6xeuncFr619pu+R/08jkYn9GIXlgPzD9THUpEI+m/OSp5nVPgIamiN7LudOSks6 zwk9THkxeSmW95KNEHW5h8Y8MoB0wXzGdr0yiV32nLmvyG18JU6
Respuesta1
El archivo es un authorized_keys
archivo para SSH, que a menudo se encuentra en formato ~/.ssh/authorized_keys
. Tiene varios campos y el campo que desea eliminar es el primer campo opcional de "opciones".
El segundo campo es el campo "tipo de clave " , que tendrá uno de los valores ,,,, o ecdsa-sha2-nistp256
, según el manual.ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-ed25519
ssh-dss
ssh-rsa
sshd
Podemos utilizar este hecho para eliminar el campo de opciones:
sed -E 's/^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))/\1/' ~/.ssh/authorized_keys >~/.ssh/authorized_keys.new &&
mv ~/.ssh/authorized_keys.new ~/.ssh/authorized_keys &&
chmod go-rwx ~/.ssh/authorized_keys
O bien, puede utilizar sed -i ...
para cambiar el archivo en el lugar si sabe cómo funciona esto normalmente en su Unix (la -i
bandera funcionalevementede manera diferente en diferentes implementaciones de sed
).
El sed
comando de edición s/^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))/\1/
coincidirá con la expresión regular extendida ^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))
y reemplazará el texto coincidente con el tipo de clave que se encuentra en la línea. La expresión coincide con cualquier cosa, desde el principio de cada línea de entrada hasta uno de los tipos de clave válidos, inclusive.
Respuesta2
sed -i 's/your_string//g' filename
Probablemente necesitarás omitir algunos signos de puntuación en tu_cadena.