Esta é uma consulta de acompanhamento emallpackages.txt.gz tem dois tamanhos de arquivo diferentes?
$ wc -l allpackages.txt
57725 allpackages.txt
Eu olhei para a saída e ela diz 57725 -6 os arquivos de cabeçalho que é o total geral de 57719 pacotes, mas conforme compartilhado nos comentários emhttp://linux.koolsolutions.com/2008/12/19/counting-number-of-packages-under-debian-linux/#comment-10014o comando a seguir deve funcionar, mas não funciona.
$ tail -n +7 allpackages.txt | cut -d’ ‘ -f1 | cut -d’-‘ -f1 | uniq | wc -l
cut: cut: the delimiter must be a single character
Try 'cut --help' for more information.
the delimiter must be a single character
Try 'cut --help' for more information.
0
Alguém pode ajudar de duas maneiras: -
a. Decodificando o que o próprio comando tenta fazer? Eu sei que tail
é usado para fornecer as últimas 10 palavras estranhas e cut
é quando você está tentando remover algumas seções do arquivo.
Se necessário, compartilhe allpackages.txt em algum lugar para que as pessoas possam descobrir a melhor maneira de saber o número exclusivo de pacotes nele contidos.
https://www.dropbox.com/sh/9p03q138xx9nxvb/AAAukls-UnxRZwoCPwx4HwLAa?dl=0
Responder1
Você mostrou o comando: tail -n +7 allpackages.txt | cut -d’ ‘ -f1 | cut -d’-‘ -f1 | uniq | wc -l
. Contém aspas não ASCII, o que certamente não é o pretendido.
Em vez disso, tente isto:
tail -n +7 allpackages.txt | cut -d' ' -f1 | cut -d- -f1 | uniq | wc -l
Aqui está o que os membros do pipeline fazem:
tail -n +7
imprime um arquivo começando na linha 7;cut -d' ' -f1
mantém o primeiro campo, utilizando um único espaço como separador;cut -d- -f1
mantém o primeiro campo, usando um sinal de menos (-
) como separador;uniq
comprime execuções de linhas idênticas em uma única linha;wc -l
imprime a contagem de linhas.
Portanto, todo o pipeline ignora as primeiras seis linhas do seu arquivo e tenta contar os valores exclusivos no campo selecionado. (Isso pressupõe que a entrada seja classificada de modo que os valores a serem compactados venham em sequência; se isso não for verdade, uma chamada para classificar, talvez
sort -u
, possa ser usada).