Eu tenho um arquivo como este:
FirstName, FamilyName, Address, PhoneNumber
Como posso classificá-lo por FamilyName?
Eu tenho um arquivo como este:
FirstName, FamilyName, Address, PhoneNumber
Como posso classificá-lo por FamilyName?
Respostas:
Se este for UNIX:
sort -k 2 file.txt
Você pode usar vários -k
sinalizadores para classificar em mais de uma coluna. Por exemplo, para classificar por sobrenome e depois pelo nome como fator de desempate:
sort -k 2,2 -k 1,1 file.txt
Opções relevantes de "classificação manual":
-k, --key = POS1 [, POS2]
iniciar uma chave em POS1, finalizá-la em POS2 (origem 1)
POS é F [.C] [OPTS], onde F é o número do campo e C a posição do caractere no campo. OPTS é uma ou mais opções de pedido de uma única letra, que substituem as opções de pedido globais para aquela chave. Se nenhuma chave for fornecida, use a linha inteira como chave.
-t, --field-separator = SEP
use SEP em vez de transição de não-branco para branco
--field-separator=','
se você tiver um operador de entrada de dados digitando valores para "Nome" como "Billy Bob" ou qualquer outra coisa ... espaços podem facilmente entrar em seus dados se você não se proteger, mas vírgulas são relativamente improváveis.
-b
opção. Isso ocorre porque, sort
na verdade, consideramos que a string a ser classificada começa logo após a vírgula, e não a partir da primeira letra da coluna. Além disso, você pode precisar prefixar o comando com LC_ALL=C
, para evitar qualquer efeito colateral devido ao local, o que pode acontecer até mesmo em um arquivo ASCII simples.
-b
( --ignore-leading-blanks
). Para esclarecer um pouco: echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2
dá a<SPACE><SPACE>b
primeiro (a segunda coluna começa depois da primeira non-blank to blank transition
e <SPACE><SPACE>b
é antes <SPACE>a
), mas com -b
isso dá aa<SPACE>a
como esperado ( a
é antes b
).
FWIW, aqui está um método de classificação para mostrar quais processos estão usando mais memória virtual.
memstat | sort -k 1 -t':' -g -r | less
As opções de classificação são definidas para a primeira coluna, usando: como separador de coluna, classificação numérica e classificação inversa.
sort -nk2 file.txt
Da mesma forma, você pode alterar o número da coluna.