É um problema típico do awk:
#!/usr/bin/awk -f
BEGIN{ col = -1; l = 0; r = 0; width = 0; }
/^chr[0-9]+:/ {
++col;
}
{
if ( col == 0 ) {
L[l++] = $0;
} else {
R[r++] = $0;
}
if ( length ($0) > width ) {
width = length ($0) ;
}
}
END {
for ( i = 0; i < l; ++i ) {
printf "%-*s %s\n", width, L[i], R[i];
}
}
Chame esse script de "foo" e torne-o executável, e canalize seus dados para ele:
./foo < foo.in
dando
chr10:127293562-127293909 chr11:49214073-49214804
BRUNOL4(Hs/Mm) BRUNOL4(Hs/Mm)
CPEB4(Hs/Mm) BRUNOL5(Hs/Mm)
CUG-BP(Hs/Mm) CPEB2(Hs/Mm)
DAZAP1(Hs/Mm) CPEB4(Hs/Mm)
ENOX1(Hs/Mm) CUG-BP(Hs/Mm)
FMR1(Hs/Mm) HNRNPC(Hs/Mm)
Isso pressupõe que as colunas esquerda / direita tenham o mesmo número de itens e que você tenha apenas duas colunas. O awk possui apenas matrizes unidimensionais. Se o seu problema exigir mais colunas (digamos, um número arbitrário), a solução em awk (ou preferencialmente em perl) seria mais complicada. Para isso, você precisaria de uma pergunta mais clara para resolver como fazer isso .