나는 다음 명령을 가지고 있습니다 :
$ 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은 각각 link와 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