GNU/Linux >> Linux Esercitazione >  >> Linux

sed - come creare gruppi regex usando sed

Questo è ciò che significano Birei e Thor:

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

Uscita:

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

Devi usare l'escape delle parentesi per raggruppare le espressioni:

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

E usali con \1 , \2 , ecc.

MODIFICA :Nota anche poco prima di SNAPSHOT quel [.] non corrisponderà. All'interno delle parentesi . è letterale. Dovrebbe essere [0-9.-]*


infatti per quelle stringhe regolari, awk potrebbe salvarti dal raggruppamento. :)

dai solo il numero di indice della parte che desideri:

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

uscita:

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. Come sostituire una stringa in un file?

  2. Come rinominare molti file usando un'espressione regolare?

  3. Come tracciare gli script Python usando trace.py

  4. Come cercare i file usando regex nello script della shell linux

  5. Come riempire un file con FF usando dd?

Come elencare i gruppi in Linux

Come rimuovere le righe da un file usando il comando Sed

COME USARE SED EDITOR

Procedura:un'introduzione all'uso di Git

Come connettersi a MySQL usando PHP

Tutorial Unix Sed:come scrivere su un file usando Sed