Dividindo o conteúdo do arquivo em outros arquivos com base no valor do parâmetro analisado no arquivo [duplicado]

4

Um arquivo regular contém dados organizados em colunas, separados por espaço. Com base no valor do segundo campo, quero dividir esse arquivo de dados inicial em vários outros arquivos.

O arquivo de dados tem 54,242 linhas e 399 colunas. Estrutura de dados é assim:

SNP Chr Pos ID_01 ID_02 ...
rs01 1 200 AA BB ...
rs02 25 10 BA AA ...
rs03 1 30 AA BB ...
rs04 X 90 BB AA ...

Minha saída deve consistir em cada registro (ou linha) em quantos file"${chr}" , pois há diferentes valores $chr na coluna 2. Assim, por exemplo:

file1 conterá todos os registros cujo 2º campo é 1 :

SNP Chr Pos ID_01 ID_02 ...
rs01 1 200 AA BB ...
rs03 1 30 AA BB ...

file25 conterá todos os registros cujo 2º campo é 25 :

SNP Chr Pos ID_01 ID_02 ...
rs02 25 10 BA AA ...

E assim por diante ...

    
por Amanda Botelho Alvarenga 15.07.2016 / 20:09

1 resposta

5

com awk :

awk 'FNR==1 { hdr = $0; next }                     
    {
        if(!f[$2]) { print hdr >"file" $2; f[$2] = 1 }
        print >>"file" $2
    }' data.txt
    
por 15.07.2016 / 20:27