Como posso fazer o ordenamento unix funcionar corretamente usando o sublinhado como um separador de campo?

2

Quando classifico foo e foo1 , espero que foo venha primeiro, que é o que acontece normalmente com unix sort .

$ echo -e "foo1\nfoo" | sort
foo
foo1

Mas quando adiciono e sublinhado e uso as opções -t e -k , ele não produz a mesma ordem de classificação.

$ echo -e "foo1_3\nfoo_3" | sort -t_ -k1
foo1_3
foo_3

Qual é o conjunto correto de opções a ser usado para tornar foo_3 antes de foo1_3 ? Eu tenho LC_COLLATE=C e estou no Ubuntu 14.04.

    
por rmccloskey 24.09.2015 / 19:27

1 resposta

1

Use

echo -e "foo1_3\nfoo_3" | sort -t_ -k1,1

Conforme o manual de classificação declara :

'-k POS1[,POS2]' '--key=POS1[,POS2]'
    Specify a sort field that consists of the part of the line between
    POS1 and POS2 (or the end of the line, if POS2 is omitted),
    _inclusive_.
    
por 24.09.2015 / 19:39

Tags