GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est le problème avec mon regex lookahead dans GNU sed?

sed -i '/^foo/! s/^/bar/' file.txt
  • -i changer le fichier en place
  • /^foo/! effectuer uniquement l'action suivante sur les lignes autres que ! commençant par foo ^foo
  • s/^/bar/ changer le début de la ligne en barre

Autant que je sache sed n'a ni vision en avant ni vision en arrière. Passez à un langage plus puissant avec une syntaxe similaire, comme perl .


Vous utilisez une syntaxe d'expression régulière compatible perl (PCRE) qui n'est pas prise en charge par GNU sed. Vous devez réécrire votre regex selon SED Regular-Expressions ou utiliser perl à la place.

Notez que SED n'a pas d'anticipation et ne prend donc pas en charge la fonctionnalité regex que vous essayez d'utiliser. Cela peut être fait dans SED en utilisant d'autres fonctionnalités, comme d'autres l'ont mentionné.


Linux
  1. Partitionner un disque sous Linux avec GNU Parted

  2. Ajout avec "sed" ?

  3. Que fait Gnome avec les touches multimédias ?

  4. Que fait poll() avec un timeout de 0 ?

  5. Quel est le problème avec linux/if.h et net/if.h ?

Initiation aux expressions régulières

Qu'est-ce que Git Bash ? Travailler avec les commandes Git Bash

10 exemples pratiques de regex avec grep

Tracer le fichier .gnu avec gnuplot

Qu'est-ce qui peut mal tourner avec une mise à niveau GLIBC ?

Expression régulière avec sed