Este script não é nem magro nem legível, mas funciona e, ao contrário da solução awk
já publicada, também gera a linha de cabeçalho:
sed 'G;s/^SNP.*/SNP/
/^1 /s/ \([^ ]*\) .*SNP[^[:cntrl:]]*/& Geno/
s/^\([0-9]*\) [^ ]*\( [AB]*\)\n\(.*\n [AB ]*\)//
s/^\([0-9]*\) [^ ]*\( [AB]*\)\(\n\)\(.*\)//
h
$!d' file1 > file2
Sem ser um usuário awk
, eu acho que você pode expandir a solução awk
como esta para gerar a linha de cabeçalho também:
awk '{if ($1==1) h=h" Geno"$2
if ($1!="SNP") g[$1]=g[$1]" "$3}
END {print "SNP"h; for (i in g) print i g[i]}' file1 > file2