2013-11-25 3 views
0

как я могу извлечь базовое имя программного обеспечения, где форма как:Linux командной строки извлечения имени из текста

программного обеспечения 1.2.3-vd.ext ИЛИ ПО-1.2.3-vd.ext

Мне нужно извлечь программное обеспечение или программное обеспечение, все до версии. Я смотрю с регулярным выражением, но не знаю, как это сделать. Спасибо.

+0

Google Grep - что должно помочь! – Ken

+0

Утилита, с которой вы получаете имена программ, только печатает имя. «rpm» может легко сделать это, например. –

ответ

3

С sed:

echo 'software-1.2.3-vd.ext' | sed 's/\-[0-9].*//' # software 
echo 'soft-ware-1.2.3-vd.ext' | sed 's/\-[0-9].*//' # soft-ware 
+0

Это отлично работает, спасибо, теперь я могу проверить, что это значит. – user3033629

+0

Добро пожаловать. Он удаляет первый '-', за которым следует число, и каждый символ после него – hek2mgl

1

Чистый раствор BASH:

s="software-1.2.3-vd.ext" 
echo "${s%%-[0-9]*}" 
software 

s="soft-ware-1.2.3-vd.ext" 
echo "${s%%-[0-9]*}" 
soft-ware 
+1

+1 для нераспускания дополнительного процесса – hek2mgl

0

С помощью команды basename (который специально предназначенном для этой цели) примеры

Смежные вопросы