Usando awk
:
$ cat snp.awk
NR == 1 { # header line
print $0
}
NR > 1 { # data line
snp = $1;
retain[snp][NR] = $0;
counts[snp]++;
}
END {
for (snp in retain) {
if (counts[snp] == 5) {
for (i in retain[snp]) {
print retain[snp][i];
}
}
}
}
$ awk -f snp.awk snp.dat
SNP R K BETA
rs1041894 3 1 0.1238
rs1041894 3 2 0.002522
rs1041894 3 3 0.01175
rs1041894 3 4 -0.01122
rs1041894 3 5 -0.009195
rs767249 1 1 0.1065
rs767249 1 2 -0.007243
rs767249 1 3 0.02771
rs767249 1 4 -0.008233
rs767249 1 5 0.05073
mas observe que awk
arrays não preservam a ordem de inserção, portanto, nesse caso, suas saídas não estão na mesma ordem em que estavam na entrada.