GNU/Linux >> Tutoriels Linux >  >> Linux

sed - comment faire des groupes regex en utilisant sed

Voici ce que Birei et Thor veulent dire :

sed -r "s/([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)(.*)/\1\n\2\n\3\n\4/"

Sortie :

test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar

Vous devez échapper les parenthèses pour regrouper les expressions :

\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)

Et utilisez-les avec \1 , \2 , etc.

MODIFIER :A noter également juste avant SNAPSHOT ce [.] ne correspondra pas. Entre parenthèses . est littéral. Il devrait être [0-9.-]*


en fait pour ces chaînes régulières, awk pourrait vous éviter de grouper. :)

il vous suffit de donner le numéro d'index de pièce que vous souhaitez :

awk 'BEGIN{FS=OFS="-"}{print $1,$2,$5,$6}' 

sortie :

kent$  echo "test-artifact-201251-balbal-0.1-SNAPSHOT.jar"|awk 'BEGIN{FS="-";OFS="-"}{print $1,$2,$5,$6}'
test-artifact-0.1-SNAPSHOT.jar

Linux
  1. Comment remplacer une chaîne dans un ou plusieurs fichiers ?

  2. Comment ajouter/lister/supprimer un groupe ?

  3. Comment tracer des scripts Python à l'aide de trace.py

  4. Comment supprimer des dossiers à l'aide de regex à partir du terminal Linux

  5. Comment supprimer les caractères non-ascii à l'aide de sed

Comment lister les groupes sous Linux

Comment supprimer des lignes d'un fichier à l'aide de la commande Sed

COMMENT UTILISER L'EDITEUR SED

Comment :une introduction à l'utilisation de Git

Comment se connecter à MySQL en utilisant PHP

Tutoriel Unix Sed :comment écrire dans un fichier à l'aide de Sed