regular pattern online examples regex linux sed regex-lookarounds

pattern - sed regex replace



¿Qué pasa con mi expresión regular anticipada en GNU sed? (3)

Hasta donde sé, sed no tiene ni mirada hacia adelante ni mirada atrás. Cambie a un lenguaje más potente con sintaxis similar, como perl .

Esto es lo que estoy haciendo (ejemplo simplificado):

gsed -i -E ''s/^(?!foo)(.*)$/bar/1/'' file.txt

Estoy tratando de poner la bar en frente de cada línea que no comienza con foo . Este es el error:

gsed: -e expression #1, char 22: Invalid preceding regular expression

¿Qué pasa?


Utiliza la sintaxis de expresión regular compatible con Perl (PCRE) que no es compatible con GNU sed. Debería reescribir su expresión regular de acuerdo con SED Regular-Expressions o usar Perl en su lugar.


sed -i ''/^foo/! s/^/bar/'' file.txt

  • -i => cambiar el archivo en su lugar
  • /^foo/! => /^foo/! => solo realiza la siguiente acción en líneas no (!) comenzando con foo (^foo)
  • s/^/bar/ => cambiar el inicio de la línea a la barra