比较 archlinux 软件包大小和受欢迎程度

比较 archlinux 软件包大小和受欢迎程度

我有这个命令:

$ expac -SsH M "%m: %n$\t%d" lynx | sort -h | tr '$' '\n'
7.24 MiB: links
    A text WWW browser, similar to Lynx
4.99 MiB: lynx
    A text browser for the World Wide Web

它返回与搜索查询匹配的 archlinux 包的包大小。我还有这个返回受欢迎程度的命令:

$ curl -s 'https://pkgstats.archlinux.de/api/packages/lynx'
---> $ curl -s 'https://pkgstats.archlinux.de/api/packages/lynx' | jq '.popularity'

正如您在“:”之后所看到的,第一个命令返回包的名称,我可以在第二个命令中使用该名称来查询其受欢迎程度。我想修改第一个命令,使其输出如下所示:

$ magic_command
7.24 MiB: links 15.65
    A text WWW browser, similar to Lynx
4.99 MiB: lynx 31.02
    A text browser for the World Wide Web

其中 15 和 31 分别是 links 和 lynx 的第二个命令的输出。什么命令行工具最适合做这样的事情?

短篇故事: 我有myc1这样的形式的多行输出:

A1: B1$ C1
A2: B2$ C2
A3: B3$ C3

我有myc2这样的输入Bi并给出类似的输出Di

我怎样才能得到以下形式的结果:

A1: B1 D1$ C1
A2: B2 D2$ C2
A3: B3 D3$ C3

其中 Di 是以下结果echo Bi | myc2

答案1

freenode#bash 的人帮我写了这个脚本:

cmppkgs(){
    local IFS="|" a b c d;
    while IFS='?' read -r a b c; do 
        d=$(curl -s "https://pkgstats.archlinux.de/api/packages/$b" | jq .popularity);
        echo "$a?$b?$d?$c"; 
    done < <(expac -SsH M "%m?%n?%d" "$*" | sort -h ) | column -t -s'?' 
}

您可以像这样使用它:

$ cmppkg lynx w3m
2.02 MiB  w3m    32.21  Text-based Web browser as well as pager
4.99 MiB  lynx   31.02  A text browser for the World Wide Web
7.24 MiB  links  15.64  A text WWW browser, similar to Lynx

相关内容