Como ordenar dados pelos números na terceira coluna? [duplicado]

3

Se eu tiver um arquivo com dados que se pareça com o seguinte, como classificaria os dados com base nos números da terceira coluna? O espaço entre as duas primeiras colunas NÃO é delimitado por tabulações, mas algum número de espaços. O espaço entre a segunda e a terceira coluna varia com base no tamanho do número. Observe também que há espaços em alguns dados da segunda coluna (como lp25( plasmid entre ( e p ), enquanto outros não têm espaços (como chromosome ).

HELIX       lp25(plasmid           24437 bp    RNA     linear       29-AUG-2011
HELIX       cp9(plasmid             9586 bp    DNA     helix       29-AUG-2011
HELIX       lp28-1(plasmid         25455 bp    DNA     linear       29-AUG-2011
HELIX       chromosome            911724 bp    DNA     plasmid       29-AUG-2011
    
por Jenna Maiz 03.02.2016 / 23:30

2 respostas

1

Tente isto:

sort -n --k3 <file>

Por exemplo:

$ sort -n -k3 test
HELIX       cp9(plasmid             9586 bp    DNA     helix       29-AUG-2011
HELIX       lp25(plasmid           24437 bp    RNA     linear       29-AUG-2011
HELIX       lp28-1(plasmid         25455 bp    DNA     linear       29-AUG-2011
HELIX       chromosome            911724 bp    DNA     plasmid       29-AUG-2011

-n classifica por valor numérico e -k3 seleciona a coluna 3.

    
por 03.02.2016 / 23:44
0
sed $'s/\t/ /g' my_file | tr -s " " | sort -t" " -k 3 

o primeiro comando sed substitui todos os caracteres de tabulação por espaço único. tr -s " " significa espremer vários caracteres de espaço em branco consecutivos para apenas um caractere space .

Se uma classificação numérica for necessária, você poderá usar

sed $'s/\t/ /g' my_file | tr -s " " | sort -t" " -n -k 3 

é claro que isso não resolveu a irregularidade da 2ª coluna, eu notei. Daí a edição. Nesse caso, tenho uma pergunta. Na linha abaixo,

HELIX       lp28-1(plasmid         25455 bp    DNA     linear       29-AUG-2011
        ^                     ^
        1                     2

são esses delimitadores 1 & 2 guia ou espaço?

    
por 03.02.2016 / 23:44