Ordem incorreta com comando sort

2

Como obter o comando de classificação trabalhando com dados separados por "|" (personagem cano)?

Considere este arquivo de amostra chamado "x", que tem dois campos:

axis-AXIS|OK
axis-AXISR|OK
axis-AXISD2X|OK
axis-AXISA|OK
axis-AXISD1|OK
axis-AXIS1RX|OK
axis-AXISR1M|OK
axis-AXISD2|FALSE
axis-AXISMD|FALSE
axis-AXISM|FALSE
axis-AXISE|OK
axis-AXISD|OK

Minha localidade:

echo $LC_ALL
C

Quando estiver classificado, o caractere "|" parece ser parte da chave que produz uma estranha variedade:

sort -t"|" x

axis-AXIS1RX|OK
axis-AXISA|OK
axis-AXISD1|OK
axis-AXISD2X|OK
axis-AXISD2|FALSE
axis-AXISD|OK
axis-AXISE|OK
axis-AXISMD|FALSE
axis-AXISM|FALSE
axis-AXISR1M|OK
axis-AXISR|OK
axis-AXIS|OK

Especificar uma chave de campo sort -t"|" -k1 x nada muda.

    
por Luciano 02.09.2015 / 22:59

1 resposta

4

Sem o número do campo de fechamento com -k , ele considerará todos os campos a partir de 1. Você precisa:

sort -k1,1 -t'|' file.txt

Teste:

$ sort -k1,1 -t'|' file.txt 
axis-AXIS|OK
axis-AXIS1RX|OK
axis-AXISA|OK
axis-AXISD|OK
axis-AXISD1|OK
axis-AXISD2|FALSE
axis-AXISD2X|OK
axis-AXISE|OK
axis-AXISM|FALSE
axis-AXISMD|FALSE
axis-AXISR|OK
axis-AXISR1M|OK

Se o seu locale não for C , você poderá defini-lo imediatamente:

LC_ALL=C sort -k1,1 -t'|' file.txt
    
por 02.09.2015 / 23:06

Tags