С perl
$ perl -F'\s+|/' -lape '
s/^(\S+\s+){4}\K.*/$&=~s|$F[2]|$F[1]|gr/e;
s/^(\S+\s+){4}\K.*/$&=~s|[RYSWKM]|$F[2]|gr/e
' ip.txt
rs# alleles chro pos ind1 ind2 ind3 ind4 ind5 ind6. .
mar_1 G/T 1 2386806 G G G G T G
mar_2 T/G 1 2386848 T T T G T G
mar_3 G/T 1 2387553 G T G T G G
mar_4 G/A 1 2564608 G G G N A G
mar_5 C/T 1 2564616 C T C T C N
-F '\ s + | /'
разделить строку ввода на пробелы или символ /
, сохраненный в ] @F
массив ^ (\ S + \ s +) {4} \ K. *
получит все столбцы, кроме первых четырех $ & = ~ s | $ F [2] | $ F [1]
в совпавшей части (столбцы, кроме первых четырех) выполнить другую замену
$ F [2]
будет содержать символ после /
и $ F [1]
будет содержать символ перед /
Модификатор] r
возвращает последнюю заменяемую строку, а модификатор e
позволяет использовать код Perl в разделе замены s // $ & = ~ s | [RYSWKM] | $ F [2] | gr / e
-lape
параметров