sed buscar y reemplazar con llaves

Resuelto atdev asked hace 12 años • 2 respuestas

Estoy intentando usar este comando:

sed -i 's#\{test1\}#test2#' /example/myfile.txt

Para reemplazar instancias de {test1}con test2.

Recibo el error:

sed: -e expression #1, char 17: Invalid preceding regular expression

¿No estoy escapando de las llaves correctamente?

atdev avatar Feb 09 '12 12:02 atdev
Aceptado
sed -i 's#{test1}#test2#' /example/myfile.txt

No necesitas escapar{}

kev avatar Feb 09 '2012 05:02 kev

No estás escapando de las llaves en absoluto. En sed, las expresiones regulares predeterminadas son BRE, donde \{e \}indican una expresión de rango. Como test1no es un rango, su BRE es incorrecto.

Para solucionarlo, puede eliminar las barras invertidas (las llaves no son especiales en BRE) o mantenerlas igual y decirle a sed que use ERE ( -rmarcar con GNU sed, -Emarcar con BSD/MacOSX sed).

Michael J. Barber avatar Feb 09 '2012 06:02 Michael J. Barber