Por exemplo, este é o list.txt
Joe 3
Jack 1
Ulysses 6
Fox 2
Cassidy 1
Jones 6
Kevin 7
Então a saída deve ser 5
porque existem 5 valores diferentes na 2ª coluna.
Como devo terminar isso usando apenas sort
cut
wc
uniq
?
Eu tenho uma ideia, primeiro use sort -k2n
para classificar a segunda coluna em ordem crescente e, em seguida, use uniq
para eliminar as linhas duplicadas da segunda coluna e, em seguida, o resultado seria como
Cassidy 1
Fox 2
Joe 3
Jones 6
Kevin 7
e então eu uso cut -d ' ' -f2
para listar todos os números como 1 2 3 6 7
e depois eu uso wc -d
para contar o número de valores distintos e isso retornará 5
.
O que devo fazer na uniq
peça para eliminar as linhas duplicadas com o mesmo número?
Existe uma maneira simples de fazer isso?
Eu começaria
cut
porque você só se importa com a exclusividade na coluna 2:resulta em:
Agora você quer valores únicos; uniq fará isso, mas apenas se for classificado. Se você for classificar, vá em frente e use o sinalizador -u de sort:
Resulta em:
e agora você pode usar
wc
para contar o número de linhas de saída:que lhe dá:
Observe que estamos contando com um formato específico para o arquivo list.txt -- sem espaços nos nomes das pessoas!
eu iria com:
Onde
names
tem esse conteúdo:Como você é obrigado a usar
-sort -cut -wc -uniq
, parece que a linha de comando necessária deve ser algo assim: