msoliver
(usa Debian)
Enviado em 14/07/2020 - 19:30h
mauricio123 escreveu:
Eu tenho um script já pronto, mas quero melhorá-lo.
O problemas está nesse código, é muito longo:
apt list --installed | cut -d '[' -f 1 | sed -e 's|amd64 |amd64|g' -e 's|all |all|g' -e 's|i386 |i386|g' -e 's|/[^ ]*now |_|g' -e 's| |_|g' -e '1d' > $L1
O código apt list --installed gera algo do tipo:
zlib1g/focal,now 1:1.2.11.dfsg-2ubuntu1 amd64 [installed]
Ele lista os pacotes instalados, mas com uma parafernália junto.
O para remover o [installed] do final, usei isso:
cut -d '[' -f 1
Mas sobra um espaço no final que eu tenho que resolver assim:
-e 's|amd64 |amd64|g' -e 's|all |all|g' -e 's|i386 |i386|g'
Sem isso o resultado final é isso:
zlib1g_1:1.2.11.dfsg-2ubuntu1_amd64_
Eu queria uma solução que pudesse melhorar ou substituir o cut para enxugar o sed e melhorar a eficiência do código.
No caso, remover o [installed] do final junto com o espaço anterior a ele.
Boa noite Mauricio,
Segue sugestão:
apt list --installed 2>/dev/null|awk -F '[/, ]' 'NR>1 {print "ESCOLHA OS CAMPOS*"}'
Observe que o número de campos vária, caso tenha pacotes a ser atualizado, ou, dependendo do tipo da instalação:
[6] alsa-utils/stable,now 1.1.8-2 amd64 [installed]
[7] anacron/stable,now 2.3-28 amd64 [installed,automatic]
[9] apt-utils/stable,now 1.8.2 amd64 [installed,upgradable to: 1.8.2.1]
Outra opção, é "pegar" direto do arquivo, aqui se mostrou mais rápido:
awk 'BEGIN{RS="\n\n";FS="[\n:]";} {print NR,NF,$2}' /var/lib/dpkg/status
É isso, espero que as informações sejam úteis....
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________