我有一个如下所示的文件:
1 51 Brahui A C A A T
1 51 Brahui A C A G T
3 51 布拉惠 A C A G C
3 51 Brahui A C G A T
5 51 Brahui A C G A T
5 51 布拉惠 A C G G C
7 51 Brahui A C G A T
7 51 布拉惠 A C G G T
9 51 布拉惠 A C G G T
9 51 布拉惠 A C G G T
我想生成一个输出文件,如果第一列/字段具有相同的值,那么我想将这两行合并在一起,并以“/”字符作为分隔符。例如:
1 51 Brahui A/A C/C A/A A/G T/T
3 51 布拉惠 A/A C/C A/G G/A C/T
有什么办法可以做到这一点吗?
P.S.从 $4 开始的列实际上有 2,834 长(即 $4-$2841),所以我认为实际输入 $4、$5、$6 等不切实际。有没有办法做到这一点?
最佳答案
pearl.229>awk '{a=$1;
b=$4;
c=$5;
d=$6;
e=$7;
f=$8;
getline;
if(a==$1)
print a,$2,$3,b"/"$4,c"/"$5,d"/"$6,e"/"$7,f"/"$8}' file3
1 51 Brahui A/A C/C A/A A/G T/T
3 51 Brahui A/A C/C A/G G/A C/T
5 51 Brahui A/A C/C G/G A/G T/C
7 51 Brahui A/A C/C G/G A/G T/T
9 51 Brahui A/A C/C G/G G/G T/T
pearl.230>
关于Linux:在同一文件中连接具有相等值的两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9992215/