Как получить список домашних страниц пакетов в разделе репозитория из командной строки?

Как получить список домашних страниц пакетов в разделе репозитория из командной строки?

Некоторое время назад я спрашивал здесь окак получить список пакетов в разделе репозитория из командной строки.

Согласно Synaptic Package Manager, многие из этих пакетов имеют домашнюю страницу. Как мне добавить ее в мой автоматически сгенерированный список пакетов из командной строки?

Менеджер пакетов Synaptic, показывающий ссылку на домашнюю страницу пакета

Кажется, это не так просто, как добавить вариант аргумента к любому из предыдущих ответов.

решение1

Вы могли бы расширитьОтвет Браймачтобы просто извлечь имена пакетов, затем получить полную информацию о пакете для каждого и awkсохранить ее для форматирования.

aptitude -F'%p' search '?section(hamradio) ?architecture(amd64)' \
| xargs apt-cache show \
| awk '/^Package/ {printf("\n"$2)} /^Homepage/ {printf (": "$2)}'

Я добавляю дополнительный архитектурный лимит в запрос, чтобы остановить (в моем случае) дубликаты в архитектуре i386. Вы можете пропустить это, если хотите.

acfax
aldo
antennavis: http://www.include.gr/antennavis.html
aprsd: http://sourceforge.net/projects/aprsd/
aprsdigi: http://aprsdigi.sourceforge.net/

У первых двух не указаны домашние страницы. У последних трех они указаны.

Если вам нужны только те, у которых есть домашние страницы, я предлагаю переключить на awkпечать только при нахождении домашней страницы. Мы сохраним имя пакета в переменной. Вот так:

... | awk '/^Package/ {p=$2} /^Homepage/ {printf ("%s: %s\n", p, $2)}'

решение2

Я убралсяОтличный ответ Олии сделал этоусловный. $1="";sub(FS,"");Кодовый хак убирает первое Description-en:поле и разделитель полей в виде одного пробела, все очень лаконично. Этообъяснено здесь.

aptitude -F'%p' search '~r native ~s hamradio' \
    |xargs apt-cache show \
    |awk '/^Package/{name=$2} \
          /^Description-en/{$1="";sub(FS,"");description=$0}
          /^Description-en/{description=$0} \
          /^Homepage/{url=$2} \
          /^$/{if(url) {printf("|["name"]("url")|"description"|\n"); url=""} \
               else {printf("|"name"|"description"|\n")}}'

Теперь он дает полныйТаблица разметки Pandocстроки, которые в конечном итоге преобразуются вHTML-таблица на моем сайте.

|acfax|Receive faxes using your radio and sound card|
|aldo|Morse code training program|
|[antennavis](http://www.include.gr/antennavis.html)|antenna radiation pattern visualization software|
|[aprsd](http://sourceforge.net/projects/aprsd/)|Internet Gateway for the Automatic Position Reporting System|
|[aprsdigi](http://aprsdigi.sourceforge.net/)|digipeater for APRS|
|[ax25-apps](http://aprsdigi.sourceforge.net/)|AX.25 ham radio applications|
|[ax25-node](http://aprsdigi.sourceforge.net/)|Amateur Packet Radio Node program|
|[ax25-tools](http://aprsdigi.sourceforge.net/)|tools for AX.25 interface configuration|
|[ax25-xtools](http://aprsdigi.sourceforge.net/)|tools for AX.25 interface configuration -- X11-based|
|[ax25mail-utils](http://aprsdigi.sourceforge.net/)|hamradio utilities for fbb|

Связанный контент