Вывод из rpm -qa, как извлечь только имя пакета?
Формат вывода команды rpm -qa
выглядит следующим образом:
abrt-1.1.14-1.fc14.x86_64
abrt-addon-ccpp-1.1.14-1.fc14.x86_64
abrt-addon-kerneloops-1.1.14-1.fc14.x86_64
abrt-addon-python-1.1.14-1.fc14.x86_64
abrt-desktop-1.1.14-1.fc14.x86_64
abrt-gui-1.1.14-1.fc14.x86_64
abrt-libs-1.1.14-1.fc14.x86_64
abrt-plugin-bugzilla-1.1.14-1.fc14.x86_64
abrt-plugin-logger-1.1.14-1.fc14.x86_64
abrt-plugin-runapp-1.1.14-1.fc14.x86_64
Может ли кто-нибудь сказать мне, как надежно удалить версию, выпуск и часть arch, чтобы в итоге я получил
abrt
abrt-addon-ccpp
abrt-addon-kerneloops
abrt-addon-python
abrt-desktop
abrt-gui
abrt-libs
abrt-plugin-bugzilla
abrt-plugin-logger
abrt-plugin-runapp
Я бы предпочел избежать попыток построить регулярное выражение для sed, потому что я ожидаю, что оно будет сложным для поддержки таких имен, как super-3d-editor-0.1-1.fc14.x86_64 или подобных. Я уверен, что я не первый, кто хочет такой фильтрации, поэтому я спрашиваю здесь, чтобы проверить, существует ли уже какое-то решение.
Обновление: Примечание "или подобное" выше подразумевает некоторые знания о том , как выглядят имена пакетов rpm. Большинство из них "красиво выглядят", как представленные выше, но есть также записи с более разнообразными схемами нумерации:
fxload-2002_04_11-9.fc12.x86_64
GitPython-0.2.0-0.3.beta1.fc14.noarch
ModemManager-0.4-4.git20100720.fc14.x86_64
python-peak-rules-0.5a1.dev-12.a1.dev.20100803svn2646.fc14.noarch
pytz-2010h-3.fc14.noarch
Также обратите внимание, что существуют пакеты, в которых номер версии является частью имени, например
java-1.5.0-gcj-1.5.0.0-34.fc14.x86_64
java-1.6.0-openjdk-1.6.0.0-49.1.9.3.fc14.x86_64
java-1.6.0-openjdk-devel-1.6.0.0-49.1.9.3.fc14.x86_64
И есть даже несколько, где отсутствует релиз/арка (это может быть трудно справиться, и я могу смириться с неспособностью справиться с этим)
bouml-doc-4.3.2-3.noarch
fedora-release-14-1.noarch
glibc-2.12.90-21.i686
basesystem-10.0-3.noarch
ivtv-firmware-20080701-20.noarch
gpg-pubkey-97a1071f-4c49d6fe
Вот почему я попросил надежный способ сделать это; Я знал, что создание приблизительного регулярного выражения sed будет возможно, но оно не сможет обработать много строк.
(Я знаю, что можно отформатировать вывод из rpm с помощью --queryformat, однако это мне не поможет, потому что я хочу сравнить, какие пакеты я установил сегодня, сравнивая с rpm -qa
списком, который был сгенерирован год назад назад.)