classificando duas colunas

0

Estou tentando usar o comando sort (5.97) para classificar uma coluna de dados e depois outra.

Neste momento, estou fazendo:

 > ls test/2/*.jpg | sort -t- -k1 -g -s
test/2/0-0.jpg
test/2/0-10.jpg
test/2/0-1.jpg
test/2/0-2.jpg
test/2/0-3.jpg
test/2/0-4.jpg
test/2/0-5.jpg
test/2/0-6.jpg
test/2/0-7.jpg
test/2/0-8.jpg
test/2/0-9.jpg
test/2/1-0.jpg
test/2/1-10.jpg
test/2/1-1.jpg
test/2/1-2.jpg
test/2/1-3.jpg
test/2/1-4.jpg
test/2/1-5.jpg
test/2/1-6.jpg
test/2/1-7.jpg
test/2/1-8.jpg
test/2/1-9.jpg
test/2/2-0.jpg
test/2/2-10.jpg
test/2/2-1.jpg
test/2/2-2.jpg
test/2/2-3.jpg
test/2/2-4.jpg
test/2/2-5.jpg
test/2/2-6.jpg
test/2/2-7.jpg
test/2/2-8.jpg
test/2/2-9.jpg

Mas, como você pode ver, os números de dois dígitos estão no lugar errado. Existe uma maneira de fazer isso com o tipo?

    
por tkerwin 19.01.2010 / 21:11

2 respostas

2

Adicione um "-k2" após o seu "-k1". Ou seja,

ls test/2/*.jpg | sort -t- -k1 -k2 -g -s   (or sort -t- -n -k1 -k2)

Se houver um conflito, ele usará o segundo campo (-k2) para resolver e (bem, eu uso) o -n os trata como números. Se você trocasse a ordem e colocasse -k2 -k1, classificaria pelo segundo número no nome do arquivo e usaria o primeiro somente quando houvesse um conflito.

    
por 19.01.2010 / 21:27
1

Ei, a razão pela qual ele não está sendo classificado é porque o comando sort não consegue identificar nenhum número em cada linha. Considera isso como uma string. Tente executar o mesmo comando com o sufixo .jpg removido. Você receberá a ordem que pretende. Consulte o link . Neste link, leia a seção Opções de pedidos (opção -n). Espero que isso resolva seu problema.

    
por 19.01.2010 / 21:30

Tags