Извлечь конкретное поле в матрицу
Я пытаюсь извлечь некоторые поля из .txt
файл для создания другой таблицы. Это матрица (размер изменяется время от времени), разделенная; (далее \ в заголовке), каждое поле может иметь>= 1 числовое значение, соответствующее строке в; позиция его заголовка тоже.
Если это поле содержит значение, я хочу скопировать это поле заголовка того же самого; отделите поле и получите что-то вроде ниже. Я пытался обрабатывать каждый столбец один за другим, но я даже не знаю, как awk/grep правильное поле и поставить его как новый столбец.
Если вы посмотрите на исходное изображение, которое я открыл в Excel, как файл, разделенный табуляцией, для более удобного просмотра, заголовок каждого столбца содержит очень длинную строку, разделенную символом " \ ", которая представляет три типа информации: Name \ HGVSc \ HGVSp. Имя всегда одно в столбце, но HGVSc \ HGVSp далее разделяются на переменное число полей с помощью "; ", но число "; " поля всегда одинаковы для заголовка столбца вниз по его строке.
Для каждой "ячейки", которая отделена только "; ", она может иметь номер или просто "." как пустые значения, а позиция числа указывает на подпозицию полей HGVSc и HGVSp в заголовке, к которому относятся эти ячейки.
Например, в первой ячейке строки CLAM19_S18 эти два числа находятся в 1-й и 2-й позиции самих себя и относятся к 1-й и 2-й подстроке HGVSc и HGVSp соответственно.... iec646_647insTGCTCCGTGGGC;c.457_458insGG и.;p.Val153fs
Таким образом, в итоговой таблице будет добавлено три новых столбца для каждого исходного столбца, которые содержат: Имя гена, которое всегда одинаково по столбцу, но HGVSc и HGVSp могут быть разными или пустыми в зависимости от положения ячеек, содержащих числовое значение.
Может кто-нибудь дать мне какое-нибудь предложение или подход? Я новичок в сценариях Bash и Perl, но любой комментарий приветствуется. Спасибо
пример
\ ACD\c.646_647insTGCTCCGTGGGC;c.457_458insGG\.;p.Val153fs ANKRD26\c.3270_3271insTTCTAGGCTATTGAGTTTACTTTCAGTTTTAAAT;c.2251_2252delTGinsCA;c.1683+1408_1683+1409insTTGTG;c.741-709G>A\p.Ser1091fs;p.Cys751His;.;. BCOR\c.1260T>C\p.Asp420Asp CBL\c.298T>A;c.1223_1227+1delGGCAGG;c.1223G>T;c.1536T>A\p.Ser100Thr;p.Trp408fs;p.Trp408Leu;p.Ser512Arg CLAM10_S10 .;. .;.;.;. . .;.;.;. CLAM11_S11 .;. .;.;0.102;. . .;.;.;. CLAM12_S12 .;. .;.;.;. . .;.;.;. CLAM13_S13 .;. .;.;.;. . .;.;.;. CLAM14_S14 .;. .;.;.;. . .;.;.;0.038 CLAM15_S15 .;. .;.;.;. . .;.;.;. CLAM16_S16 .;. .;.;.;. . .;.;.;. CLAM18_S17 .;. .;.;.;. . .;.;.;. CLAM19_S18 0.073;0.088 .;.;.;. . .;.;.;. CLAM1_S1 .;. .;.;.;. . .;.;.;. CLAM20_S19 .;. .;.;.;. . .;.;0.233;. CLAM21_S20 .;. .;.;.;. . .;.;.;. CLAM23_S21 .;. .;.;.;. . .;.;.;. CLAM24_S22 .;. .;.;.;. . .;.;.;. CLAM25_S23 .;. .;.;.;. . .;.;.;. CLAM26_S24 .;. .;.;.;. . .;.;.;. CLAM27_S1 .;. .;.;.;. . .;.;.;. CLAM28_S2 .;. .;.;.;. . .;.;.;. CLAM29_S3 .;. .;.;.;. . .;.;.;.
Требуемый разделенный вкладкой результат
\ ACD ACD_HGVSc ACD_HGVSp ACD_VAF ANKRD26 ANKRD26_HGVSc ANKRD26_HGVSp ANKRD26_VAF BCOR BCOR_HGVSc BCOR_HGVSp BCOR_VAF CBL CBL_HGVSc CBL_HGVSp CBL_VAF CLAM10_S10 CLAM11_S11 c.1683+1408_1683+1409insTTGTG . 0.102 CLAM12_S12 CLAM13_S13 CLAM14_S14 c.1536T>A p.Ser512Arg 0.038 CLAM15_S15 CLAM16_S16 CLAM18_S17 CLAM19_S18 ACD c.646_647insTGCTCCGTGGGC;c.457_458insGG .;p.Val153fs 0.073;0.088 CLAM1_S1 CLAM20_S19 c.1223G>T p.Trp408Leu 0.233 CLAM21_S20 CLAM23_S21