Classifique vários arquivos csv com base em duas colunas em um diretório

1

Eu tenho vários arquivos .csv em um diretório chamado mydirectory . Eu quero classificar todos esses arquivos usando um comando bash / awk / sed primeiro baseado na coluna LeftChr e depois na coluna RightChr e obter o result .

>Id LeftChr LeftPosition    LeftStrand  LeftLength  RightChr    RightPosition   RightStrand
1979    chr1    825881  -   252 chr2    5726723 -
5480    chr2    826313  +   444 chr2    5727501 +
5492    chr5    869527  +   698 chr2    870339  +
1980    chr2    1584550 -   263 chr1    1651034 -
5491    chr14   1685863 +   148 chr1    1686679 +
5490    chr1    1691382 +   190 chr1    1693020 +

resultado

>Id LeftChr LeftPosition    LeftStrand  LeftLength  RightChr   RightPosition   RightStrand
     5490   chr1    1691382 +   190 chr1    1693020 +
     1979   chr1    825881  -   252 chr2    5726723 -
     1980   chr2    1584550 -   263 chr1    1651034 -
     5480   chr2    826313  +   444 chr2    5727501 +
     5492   chr5    869527  +   698 chr2    870339  +
     5491   chr14   1685863 +   148 chr1    1686679 +
    
por MAPK 04.12.2015 / 02:53

1 resposta

1

Você basicamente só precisa de 'sort -k'

for f in *.csv; do
   # output of first line
   head -1 $f
   # output of any but first line, then sort after 2. then 6. column
   tail -n +2 $f | sort -k 2,6
done
    
por 05.12.2015 / 02:12