Eu tenho um arquivo de duas colunas e n
número de linhas.
a coluna 1 contém names
e a coluna2 age
.
Desejo classificar o conteúdo deste arquivo em ordem crescente com base em age
(na segunda coluna).
O resultado deve exibir o name
da pessoa mais jovem juntamente com a name
segunda pessoa mais nova e assim por diante ...
Quaisquer sugestões para um shell de um liner ou script bash.
Respostas:
Você pode usar o
sort
comando :Por exemplo:
fonte
-h
em vez de-n
vai valores legíveis tipo humanos como2G
ou3K
bem como números separados por vírgulas, por exemplo1,234.5
LC_ALL=C
para obter a ordem de classificação tradicional que usa valores de bytes nativos." (para maiúsculas e minúsculas sem-n
)sort -t$'\t' -k2 -n FILE
Solução:
sort -k 2 -n filename
escrito mais detalhadamente como:
sort --key 2 --numeric-sort filename
Exemplo:
Explicação:
-k # - este argumento especifica a primeira coluna que será usada para classificar. (observe que a coluna aqui é definida como um campo delimitado por espaço em branco; o argumento
-k5
será classificado começando com o quinto campo em cada linha, não o quinto caractere em cada linha)-n - esta opção especifica uma "classificação numérica", significando que a coluna deve ser interpretada como uma linha de números, em vez de texto.
Mais:
Outras opções comuns incluem:
Existem outras opções, mas essas são as mais comuns e úteis, que eu uso com frequência.
fonte
-t
foi salva-vidas da vida real !! quando suas colunas têm espaços e as colunas diferem por um determinado caractere como,
ou uma guiaPara valores separados por tabulação, o código abaixo pode ser usado
-r pode ser usado para obter dados em ordem decrescente.
-n para ordenação numérica
-k, --key = POS1 [, POS2] onde k é a coluna no arquivo.
Para a ordem decrescente abaixo, está o código
fonte
Use
sort
.fonte