com awk
:
awk 'FNR==1 { hdr = $0; next }
{
if(!f[$2]) { print hdr >"file" $2; f[$2] = 1 }
print >>"file" $2
}' data.txt
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 ...