Desculpe se esta é uma pergunta duplicada, mas não encontrei a resposta que estou procurando aqui ou na documentação.
Eu tenho um arquivo que se parece com o seguinte:
chr2_oligo1234 700 750
chr2_oligo1236 750 800
chr1_oligo1 50 100
chr1_oligo256 150 200
chr1_oligo6 3500 3550
chr4_oligo95 50 100
chr5_oligo1 50 100
chr4_oligo4 150 200
A saída desejada é semelhante a:
chr1_oligo1 50 100
chr1_oligo256 150 200
chr1_oligo6 3500 3550
chr2_oligo1234 700 750
chr2_oligo1236 750 800
chr4_oligo95 50 100
chr4_oligo4 150 200
chr5_oligo1 50 100
O padrão no início (por exemplo, chr # _oligo #) só importa em termos de chr #, significando que todos chr1 devem ser primeiro, depois chr2, depois chr3, etc., mas eu gostaria de classificar esses substrings numericamente em grupos, como mostrado pela saída desejada acima. Então, eu gostaria de saber como classificar alfabeticamente no caso da primeira coluna, e então manter essa ordem (chr1- > chrN), classificar cada parte dos dados numericamente.
Peço desculpas se meu texto não for o melhor para esse problema ou se for uma duplicata. Tentando
sort -k1,1 -nk2
classifica corretamente numericamente, mas não mantém a primeira classificação intacta (embaralha a primeira coluna e coloca juntas todas as linhas, com as colunas 2 e 3 sendo como:
50 100
Estou usando o Mac OS X.
EDIT: Eu quero mudar alguns dos exemplos na primeira coluna para mostrar mais do que estou procurando. gsort -V funcionou muito bem se o nome na primeira coluna estiver em ordem numérica, mas no meu conjunto de dados nem sempre é o caso.
Eu gostaria essencialmente de ordenar cada subgrupo (neste caso, chr1, chr2, etc) pela coluna 2 iterativamente. Eu percebo que isso pode ser feito facilmente fazendo um grep para cada um e, em seguida, classificando-o na coluna 2, mas eu gostaria de saber se o comando sort ou another unix poderia realizar isso sozinho.