classificar não está funcionando para entradas semelhantes

5

Estou classificando um arquivo antes de juntá-lo a outro arquivo, usando

sort -k1 file1 > file1_sort

Quando tento juntar-me ao segundo arquivo, recebo um erro dizendo que arquivo1 não está classificado. Eu acho que isso está ocorrendo por causa da seguinte entrada:

chr6_32609371_I I2 D 
chr6_32609371 T C

A linha "chr6_32609371" precisa ser colocada antes do "chr6_32609371_I" no meu arquivo classificado. Existe um argumento que eu possa adicionar ao comando sort para que isso aconteça?

    
por user3745089 29.10.2014 / 16:04

1 resposta

5

O problema é que sort -k1 não irá classificar de acordo com o primeiro campo, mas com do o primeiro campo até o final da linha. De man sort (ênfase minha):

KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where F is a field number and C a character position in the field; both are origin 1, and the stop position defaults to the line's end.

Portanto, -k1 está comparando chr6_32609371_I I2 D a chr6_32609371 T C e, como I está antes de T , está classificando como você vê. Para contornar isso, você deve informar sort para levar em consideração apenas o primeiro campo passando uma posição inicial e uma posição final:

sort -k1,1 file
    
por 29.10.2014 / 16:17

Tags