LinuxForum.Fans
Тема

Regexp. Отбросить версии пакетов?

Автор: Macumazan 4 сообщений 1592 просмотров
#55747

Приветствую!
Есть список пакетов

text

eselect-1.2.10
eselect-boost-0.3
sudo-1.7.2_p7
rpm2targz-9.0.0.3g
unzip-6.0-r1
xz-utils-4.999.9_beta
cdrtools-2.01.01_alpha75
dvd+rw-tools-7.1-r1
myspell-en-20081002
emul-linux-x86-baselibs-20100409
emul-linux-x86-gtklibs-20100409-r1
virt-manager-0.8.4-r2
virtinst-0.500.3
hal-info-20090716
mc-4.7.0.3
mime-types-8
gnome-desktop-sharp-2.26.0
gnome-panel-sharp-2.24.0-r10
iniparser-3.0b-r1
mlrpc-c-1.18.02
Authen-SASL-2.12
Class-MethodMaker-2.15
Digest-HMAC-1.01-r1
Digest-SHA1-2.12
Error-0.17.016

Помогите плиз составить подходящий для всех строк regexp для sed, что бы в результате на выходе оказались только имена пакетов.
Дошел до состояния

text
$ echo xf86-vidmodeproto-2.3 | sed 's/[a-z]*\([0-9]*\)\?-\?\([a-z]*\)/TESTTEST/;'
TESTTEST-2.3

но далее уже мозг не варит)

#55771

Я сомневаюсь, что это возможно, т.к все случаи трудно предусмотреть.
Лучше попытаться воспользоваться выводом "dpkg -l", там эти поля разделены
пробелами. Или извлекать их из "dpkg -p packet_name".
Кроме того, в случае сложных выражений для sed, удобнее помещать правила
в отдельный файл и подключать его опцией sed "-f", я так делал, когда мне
надо было извлечь имена пакетов из html-страницы со списком пакетов для
некоей секции.

Пётр.

#55791
Macumazan написал:
Помогите плиз составить подходящий для всех строк regexp для sed, что бы в результате на выходе оказались только имена пакетов.

начните вот с чего: запишите (например прямо здесь) ЧТО вы считаете именем. Только без всяких двухсмысленностей. Если есть исключения - они должны выполнятся всегда, для ВСЕХ пакетов.

Macumazan написал:
$ echo xf86-vidmodeproto-2.3 | sed 's/[a-z]*\([0-9]*\)\?-\?\([a-z]*\)/TESTTEST/;' TESTTEST-2.3

ну-ну... а что если цифра в имени?
реальный пример - k3b.
в имени может быть всё что угодно.

hint используйте ключ -r, выражение примет вид:
sed -r 's/[a-z]*([0-9]*)?-?([a-z]*)/TESTTEST/;'
проще, не правда-ли?

#56005

Пожалуй соглашусь с Peter. Список вариантов примерный, реально пакетов намного более, поэтому предусмотреть все случаи тяжело.
С -r удобнее, спасибо.

Войдите или зарегистрируйтесь, чтобы ответить.