awk подход:
awk 'BEGIN{OFS="\t";print "pos" OFS "COL1"}{if(NR==1){for(f=2;f<=NF;f++) c[f]=$f;}
else{for(i=2;i<=NF;i++) print $1,c[i],$i}}' real2.txt
Вывод:
pos COL1
18691441 COL1 C
18691441 COL2 A
18691441 COL3 G
18691572 COL1 G
18691572 COL2 C
18691572 COL3 G
18691620 COL1 A
18691620 COL2 T
18691620 COL3 G
18691716 COL1 C
18691716 COL2 G
18691716 COL3 C
OFS="\t"
- разделитель полей вывода
print "pos" OFS " COL1"
- печатает заголовок строку
if(NR==1){for(f=2;f<=NF;f++) c[f]=$f;
- сбор имен столбцов из первой строки/заголовка
for(i=2;i<=NF;i++) print $1, c[i], $i
- вывод каждого столбца (COL.. ,
) значение "построчно" относительно соответствующего значения столбца pos
и соответствующего имени столбца.
Я знаю, что уже поздно, но можно добавить команду xdotool в автозагрузку.
Клавиша xdotool Shift+Alt+2