遺伝子型計算用の大容量入力ファイルがあります。最初の数行は次のとおりです。
LocusID f nAlleles x y
2L:8347 1 2 44.3166 -12.2373
2L:8347 1 2 39.2667 -6.8333
2L:31184 1 2 39.2667 -6.8333
2L:31184 1 2 39.2667 -6.8333
2L:42788 1 2 39.2667 -6.8333
2L:42788 1 2 39.2667 -6.8333
2L:42887 1 2 39.2667 -6.8333
2L:42887 1 2 39.2667 -6.8333
最初の列はサイトIDであり、各サイトに同じサイトIDを持つ2行があります。 x列とy列は、各軌跡に対して資格のない列だけを維持したいと思います。
これは上記の例で私が望む結果です。
out
2L:8347 1 2 44.3166 -12.2373
2L:8347 1 2 39.2667 -6.8333
どうすればいいのかご存知ですか?
ベストアンサー1
$ cat tst.awk
NR == 1 {
for (i=1; i<=NF; i++) {
f[$i] = i
}
next
}
NR % 2 {
split(prev,p)
if ( ( p[f["x"]] != $(f["x"]) ) || ( p[f["y"]] != $(f["y"]) ) ) {
print prev
print
}
}
{ prev = $0 }
$ awk -f tst.awk file
2L:8347 1 2 44.3166 -12.2373
2L:8347 1 2 39.2667 -6.8333