Доброе утро, у меня есть файл, который выглядит так:
file.txt
G05829 H05037 A A*02:01:01 A*11:01:01
G05829 H05037 DRA DRA*01:01:01 DRA*01:02:02
G05829 H05037 DPB1 DPB1*04:01:01 DPB1*04:02:01
G05829 H05037 DRB3 DRB3*01:01:02 DRB3*01:01:02
G05829 H05037 B B*08:01 B*44:02
G05829 H05037 DRB1 DRB1*03:01:01 DRB1*04:01:01
G15526 H12517 B B*07:02 B*35:01
G15526 H12517 DRB5 DRB5*01:01:01 DRB5*01:01:01
G15526 H12517 DRA DRA*01:02:03 DRA*01:02:03
Мне нужно иметь столбцы 4 и 5 в формате
A*01:01 A*01:01
DRA*01:01 DRA*01:01
(...)
Итак, первые буквы, которые идентифицируютлокус, звезда, 2 цифры, столбец и 2 две цифры.
Моя проблема в том, что не все столбцы имеют одинаковую длину.Некоторые из них будут более подробными и будут иметь 2 или 3 двоеточия (например, DPB1 * 01: 02: 02 или DQB1 * 49: 34: 01: 03), в то время как другие будут иметь только одно двоеточие (предполагаемый вывод, например, DPA * 01: 01).
Я пробовал несколько разных подходов, но я могу обрезать только с конца (что не работает, потому что они имеют разную длину), обрезать с начала (Alsop не работает, потому что первый идентификатор можетбыть 1 буквой или 3 буквами и цифрой (например, идентификатор может быть 'A' или 'DPB1'). Я пытался с sed, в итоге я заменил все двоеточия. Мои попытки:
sed 's/\:[0-9][0-9]//g' file.txt
Этообрезает все двоеточия + цифры НЕПРАВИЛЬНО
sed 's/\:[0-9][0-9]\:[0-9][0-9]\t/\t/g' file.txt
Это обрезает только второй столбец и не учитывает различия по длине в каждом столбце.
Мне нужно что-то, что будет:
распознает идентификатор (A, B, C, DPA1, DQB1), звездочку (*), числа после начала (01,02,13 (..)), первое двоеточие (:) и следующие цифры перед следующимстолбец (01,02,03 ...)
, поэтому желаемый результат будет выглядеть примерно так:это:
niceoutput.txt
G05829 H05037 A A*02:01 A*11:01
G05829 H05037 DRA DRA*01:01 DRA*01:02
G05829 H05037 DPB1 DPB1*04:01 DPB1*04:02
G05829 H05037 DRB3 DRB3*01:01 DRB3*01:01
G05829 H05037 DRB1 DRB1*03:01 DRB1*04:01
G05829 H05037 B B*08:01 B*44:02
G15526 H12517 B B*07:02 B*35:01
G15526 H12517 DRB5 DRB5*01:01 DRB5*01:01
G15526 H12517 DRA DRA*01:02 DRA*01:02
спасибо!