Как заменить несколько вхождений письма на это письмо? - PullRequest
0 голосов
/ 02 мая 2018

У меня есть файл с 5 столбцами, который выглядит следующим образом:

15642 G A.aa,, 0.77501 107
15643 G A.a,.A, 0.7570 17
15644 C t.TtTt,.T, 0.7501 10

Я пытаюсь преобразовать 3-й столбец Aa и Tt в просто "A" или "T". Выход:

15642 G A 0.77501 107
15643 G A 0.7570 17
15644 C T 0.7501 10

Я пробовал разные методы awk без успеха. Я искренне признателен за любую помощь. Спасибо!

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Есть много возможностей, включая:

$ awk '{sub(/\..*/,"",$3)} 1' file
15642 G A 0.77501 107
15643 G A 0.7570 17
15644 C t 0.7501 10

или

$ awk '{$3=substr($3,1,1)} 1' file
15642 G A 0.77501 107
15643 G A 0.7570 17
15644 C t 0.7501 10

или

$ awk '{$3=toupper(substr($3,1,1))} 1' file
15642 G A 0.77501 107
15643 G A 0.7570 17
15644 C T 0.7501 10
0 голосов
/ 03 мая 2018

Это может сработать для вас (GNU sed):

sed -ri 's/(\S)\S*/\U\1/3' file

Преобразовать первый символ третьего поля в верхний регистр.

0 голосов
/ 02 мая 2018

После awk может помочь вам в том же.

awk '$3~/[Aa]/{$3="A"} $3~/[Tt]/{$3="T"} 1'   Input_file
...