msoliver
(usa Debian)
Enviado em 02/04/2016 - 12:50h
DeidyC escreveu:
Bom dia, galera. Novamente agradecendo a atenção de todos. Mais uma dúvida
Tenho o seguinte arquivo
name id alello chr pos snp
s1 215 a 1 11 a215
s1 216 a 1 11 a216
s1 217 a 1 11 a217
s1 218 a 1 11 a218
s2 215 b 2 22 b215
s2 216 b 2 22 b216
s2 217 b 2 22 b217
s2 218 b 2 22 b218
E preciso que ele fique assim:
snp allelo chr pos 215 216 217 218
s1 a 1 11 a215 a216 a217 a218
s2 b 2 22 b215 b216 b217 b218
Muito obrigado
Boa tarde Deidy.
Ignore as perguntas feitas anteriormente (RESPOSTA nº 2) . . . :)
Segue a solução:
#!/bin/bash
TEMP="log_temp.txt"
[ $1 ] || { echo -e "\n USO: $0 log.txt" ; exit ; }
sed -n 1p $1 > $TEMP
sed -i 1d $1
awk '{if (NR%4!=0)print $1,$2,$3,$4,$5,$6;else print $1,$2,$3,$4,$5,$6"\n\n"}' $1 >> $TEMP
sleep 1
awk 'BEGIN { RS="\n\n";FS="\n";} {print $1,$2,$3,$4,$5"\n"}' $TEMP |sed '/^$/d'|awk '{if (NR==1)print $6,$3,$4,$5,$8,$14,$20,$26"\n"$7,$9,$10,$11,$12,$18,$24,$30;else print $1,$3,$4,$5,$6,$12,$18,$24 }'
SAíDA :
snp alello chr pos 215 215 217 218
s1 a 1 11 a215 a215 a217 a218
s2 b 2 22 b215 b216 b216 b218
ONDE:
cat log.txt
name id alello chr pos snp
s1 215 a 1 11 a215
s1 216 a 1 11 a216
s1 217 a 1 11 a217
s1 218 a 1 11 a218
s2 215 b 2 22 b215
s2 216 b 2 22 b216
s2 217 b 2 22 b217
s2 218 b 2 22 b218
CONSIDERAÇÕES:
EXCETO O REGISTRO 01(05 CAMPOS), OS DEMAIS TEM 04 CAMPOS
----------------------------------------------------------------------------------------
Seguindo as REGRAS do VIVA O LINUX, se resolver, marque como resolvido, por favor.
----------------------------------------------------------------------------------------
Gostando da resposta, marque-a como a MELHOR, dessa forma, ganho uns pontinhos, o que incentiva
continuar colaborando, ajudando, participando e compartilhando conhecimentos . . . :)
----------------------------------------------------------------------------------------
Att.:
Marcelo