Как удалить разделитель и следующую строку после повторного появления разделителя во всех строках и столбцах - PullRequest
0 голосов
/ 21 мая 2019

У меня есть большая таблица (миллионы строк на сотни столбцов, разделенных табуляцией), первые три столбца выглядят так:

GT:DS:GP    0|0:0.181:0.827,0.165,0.008 0|0:0.181:0.827,0.165,0.008 0|0:0.181:0.827,0.165,0.008
GT:DS:GP    0|0:0.109:0.894,0.103,0.003 0|0:0.109:0.894,0.103,0.003 0|0:0.109:0.894,0.103,0.003
GT:DS:GP    0|0:0.004:0.996,0.004,0.000 0|0:0.004:0.996,0.004,0.000 0|0:0.004:0.996,0.004,0.000
GT:DS:GP    0|0:0.117:0.886,0.110,0.003 0|0:0.117:0.886,0.110,0.003 0|0:0.117:0.886,0.110,0.003

Все остальные столбцы выглядят как столбцы 2 и 3. Мне нужен новый файл, основанный на первом файле, без текста, который идет после второго двоеточия (:). Вывод должен выглядеть следующим образом:

GT:DS   0|0:0.181   0|0:0.181   0|0:0.181
GT:DS   0|0:0.109   0|0:0.109   0|0:0.109
GT:DS   0|0:0.004   0|0:0.004   0|0:0.004
GT:DS   0|0:0.117   0|0:0.117   0|0:0.117

Я чувствую, что это может быть что-то похожее на то, что я нашел в этом посте , но, очевидно, команда выхода говорит ему остановиться после первого вхождения, поэтому оно не работает с несколькими вхождениями ( в несколько строк / столбцов) ...

awk -v RS=':' -v ORS=':' 'NR==1{print} NR==2{print; printf"\n";exit}' input > output

Результат этой неудачной попытки:

GT:DS:

Заранее спасибо за помощь!

1 Ответ

3 голосов
/ 21 мая 2019
$ sed 's/\([^:]*:[^:]*\):[^:\t]*/\1/g' file
GT:DS   0|0:0.181       0|0:0.181       0|0:0.181
GT:DS   0|0:0.109       0|0:0.109       0|0:0.109
GT:DS   0|0:0.004       0|0:0.004       0|0:0.004
GT:DS   0|0:0.117       0|0:0.117       0|0:0.117
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...