por qué sed no reemplaza el carácter especial

por qué sed no reemplaza el carácter especial

Estoy intentando reemplazar el carácter < con un carácter vacío o sin ningún carácter en este archivo /etc/dovecot/conf.d/10-ssl.conf

mi guión es

sudo sed -i 's/\<\/etc\/dovecot\/private\/dovecot\.pem/\/etc\/dovecot\/private\/dovecot\.pem/g' /etc/dovecot/conf.d/10-ssl.conf 

No funcionó entonces cansado:-

sudo sed -i '0,/\<\/etc\/dovecot\/private\/dovecot\.pem/s/\<\/etc\/dovecot\/private\/dovecot\.pem/\/etc\/dovecot\/private\/dovecot\.pem/' /etc/dovecot/conf.d/10-ssl.conf 

No funcionó tan bien. ¿Qué pasa y cómo puedo hacerlo? Además es largo. ¿Cómo puedo dividirlo en varias líneas?

Respuesta1

En sed, \<coincide con "principio de una palabra", mientras que simple <coincide literalmente.

Para una sustitución más legible, cambie los delimitadores:

sed -i 's=</etc/dovecot/private/dovecot\.pem=/etc/dovecot/private/dovecot.pem=g'

No es necesario colocar barras invertidas en la pieza de repuesto.

Puede acortar aún más la instrucción utilizando una captura:

sed -i 's=<\(/etc/dovecot/private/dovecot\.pem\)=\1=g'

información relacionada