Tecnicamente, a resposta fornecida por @ pengii23 acima está correta, mas como sabemos, o JSON não é muito fácil de entender. Além disso, isso resulta em mais de 266.000 linhas de saída para 4546 pacotes, ou mais de 56 linhas por pacote.
O que realmente queremos é apenas o nome do pacote e a descrição do pacote. O formato pode ser algo assim:
package -- description goes here
pack2 -- other description goes here
Agora, se você tiver feito um brew install gron
, então eu tenho um doozy de uma linha de comando para você que irá gerar o tipo de saída acima:
$ brew info --json=v1 --all | gron | egrep '(.desc|.full_name) =' | \
grep -v 'runtime_dependencies' | sed 's/full_name/_name/' | \
gron -u | egrep -v '({|}|\[|\])' | \
sed -e 's/^.*"_name": //' -e 's/^.*"desc": //' | tr -d '\n' | \
sed -e 's/""/^I/g' -e 's/","/ -- /g'| tr '\t' '\n' | tr -d '"'
Observe que você precisa substituir o literal "^ I" na linha acima por um caractere de tabulação real. Por alguma razão, meu sed não está gostando de '\ t' em vez de um caractere de tabulação literal, e é claro que cortar e colar um caractere de tabulação real não funcionará aqui.
De qualquer forma, aqui estão as primeiras linhas de saída do comando acima:
a2ps -- Any-to-PostScript filter
a52dec -- Library for decoding ATSC A/52 streams (AKA 'AC-3')
aacgain -- AAC-supporting version of mp3gain
aalib -- Portable ASCII art graphics library
aamath -- Renders mathematical expressions as ASCII art
aap -- Make-like tool to download, build, and install software
aardvark_shell_utils -- Utilities to aid shell scripts or command-line users
abcde -- Better CD Encoder
abcl -- Armed Bear Common Lisp: a full implementation of Common Lisp
abcm2ps -- ABC music notation software
E aqui estão as últimas linhas de saída do comando acima:
zssh -- Interactive file transfers over SSH
zstd -- Zstandard is a real-time compression algorithm
zsxd -- Zelda Mystery of Solarus XD
zsync -- File transfer program
zurl -- HTTP and WebSocket client worker with ZeroMQ interface
zxcc -- CP/M 2/3 emulator for cross-compiling and CP/M tools under UNIX
zxing-cpp -- C++ port of the ZXing barcode decoder
zyre -- Local Area Clustering for Peer-to-Peer Applications
zzuf -- Transparent application input fuzzer
zzz -- Command-line tool to put Macs to sleep
Lá vai você! Se você redirecionar essa saída para um arquivo, poderá rapidamente agilizar o arquivo para qualquer tipo de descrição que esteja procurando.
Por exemplo, se você estiver procurando por comandos de compactação, fazer um brew search compress
não é muito útil:
$ brew search compress
==> Searching local taps...
htmlcompressor ncompress yuicompressor
==> Searching taps on GitHub...
==> Searching blacklisted, migrated and deleted formulae...
Mas se salvarmos a saída do comando acima em um arquivo em /tmp/brew.txt
, então, um simples grep compress /tmp/brew.txt
retornará 60 ocorrências! Vamos dar uma olhada nos primeiros:
$ grep -i compress /tmp/brew.txt | head
advancecomp -- Recompression utilities for .PNG, .MNG, .ZIP, and .GZ files
afsctool -- Utility for manipulating HFS+ compressed files
aften -- Audio encoder which generates ATSC A/52 compressed audio streams
archivemail -- Tool for archiving and compressing old email in mailboxes
brotli -- Generic-purpose lossless compression algorithm by Google
bzip2 -- Freely available high-quality data compressor
draco -- 3D geometric mesh and point cloud compression library
ecm -- Prepare CD image files so they compress better
epsilon -- Powerful wavelet image compressor
exomizer -- 6502 compressor with CBM PET 4032 support
Então, se você estava procurando por programas de compactação avançados como brotli
ou zstd
, mas não sabia os nomes exatos para procurar, então brew search compress
não seria útil para você, mas sim para percorrer a saída do comando acima retornaria aqueles dois mais 58 mais hits!
De nada! ;)
[EDITAR: Opa! Desculpe, esqueci de remover o runtime_dependencies
da versão anterior do script. Suspiro ....]