不久前,我在这里问过如何从命令行获取存储库部分中的软件包列表。
根据 Synaptic 软件包管理器,许多软件包都带有主页。如何从命令行将其添加到自动生成的软件包列表中?
这似乎并不像在任何先前的答案中添加参数选项那么简单。
答案1
你可以扩展Braim 的回答只需拉回包名称,然后获取每个包的完整信息,然后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
我清理了Oli 的精彩回答并成功了有条件的。$1="";sub(FS,"");
代码 hack 以非常简洁的方式取消了第一个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 Markdown 表行,最终被转换成我的网站上的 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|