sed buscar y reemplazar con llaves
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?
Aceptado
sed -i 's#{test1}#test2#' /example/myfile.txt
No necesitas escapar{}
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 test1
no 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 ( -r
marcar con GNU sed, -E
marcar con BSD/MacOSX sed).