Entfernen Sie die Versionsinformationen aus der von Maven generierten Kriegsdatei

936
Daniele Torino

Ich versuche, die Bereitstellung von Kriegsdateien zu automatisieren, die von unserem Build-Server mithilfe von Maven generiert werden. Ich muss in der Lage sein, den Projektnamen aus dem Kriegsdateinamen zu extrahieren, damit ich die Datei vor der Bereitstellung umbenennen kann. (Weil Tomcat den Dateinamen als Standardkontextpfad verwendet und ich nicht möchte, dass die Version dort enthalten ist.)

Die Dateinamen sind normalerweise in der Form projectname-version. z.B:

myproject-1.2.3-SNAPSHOT.war my-better-project-1.2.3-RELEASE.war my-fancy-project-1.2.3.war 
  • SNAPSHOT oder RELEASE können im Dateinamen enthalten sein oder nicht.
  • Ein schwieriger Teil ist das Extrahieren des Projektnamens, wenn der Projektname Bindestriche enthält.

Das Ergebnis sollte der Projektname ohne Versionsinformationen sein:

myproject my-better-project my-fancy-project 

Wie kann ich dies mit bash und sed (oder nur bash) erreichen?

1

1 Antwort auf die Frage

2
Cyrus

Mit GNU sed:

sed 's/-[0-9]\+.*//' file 

Ausgabe:

Mein Projekt mein besseres Projekt mein schickes projekt 

Mit bash:

while read -r string; do [[ $string =~ (-[0-9]+.*) ]] && echo "$}" done < file 

Mit GNU grep:

grep -oP '.*(?=-[0-9]+.*)' file 
Vielen Dank. Ich verwende jetzt die sed-Lösung: CONTEXT_PATH = `echo $ 1 | sed 's / - [0-9] \ +. * //' ` Daniele Torino vor 8 Jahren 0
oder `CONTEXT_PATH = $ (sed's / - [0-9] \ +. * // '<<<" $ 1 ")` Cyrus vor 8 Jahren 1