Удалить информацию о версии из сгенерированного Maven файла войны

908
Daniele Torino

Я пытаюсь автоматизировать развертывание военных файлов, сгенерированных нашим сервером сборки с использованием maven. Мне нужно иметь возможность извлечь имя проекта из имени файла войны, чтобы я мог переименовать файл перед его развертыванием. (Поскольку tomcat использует имя файла в качестве пути к контексту по умолчанию, и я не хочу, чтобы версия была там)

Имена файлов обычно находятся в форме projectname-version. например:

myproject-1.2.3-SNAPSHOT.war my-better-project-1.2.3-RELEASE.war my-fancy-project-1.2.3.war 
  • SNAPSHOT или RELEASE могут или не могут быть включены в имя файла.
  • Одна сложная часть состоит в том, чтобы извлечь имя проекта, когда имя проекта содержит тире.

Результатом должно быть имя проекта без информации о версии:

myproject my-better-project my-fancy-project 

Как я могу добиться этого, используя bash и sed (или только bash)?

1

1 ответ на вопрос

2
Cyrus

С GNU sed:

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

Выход:

мой проект мой-лучше-проект мой-фантазии-проект 

С bash:

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

С GNU grep:

grep -oP '.*(?=-[0-9]+.*)' file 
Большое спасибо. Я сейчас использую решение sed: CONTEXT_PATH = `echo $ 1 | sed 's / - [0-9] \ +. * //' ` Daniele Torino 8 лет назад 0
или `CONTEXT_PATH = $ (sed 's / - [0-9] \ +. * //' <<<" $ 1 ")` Cyrus 8 лет назад 1

Похожие вопросы