我正在尝试从.txt
文件中提取一些字段以生成另一个表。它是一个矩阵(大小随时间变化),用 ; 分隔(进一步在标题中用 \ 分隔),每个字段可以有 >= 1 个数值,这些数值也对应于标题 ; 位置的字符串。
如果该字段确实包含值,我想复制相同 ; 分隔字段的标题字段并得到如下所示的内容。我尝试逐一处理每个列,但我甚至不知道如何 awk/grep 正确的字段并将其作为新列。
如果您查看原始图片(我为了方便查看而将其作为制表符分隔文件在 Excel 中打开),则每个列标题都包含一个由“ \ ”分隔的非常长的字符串,该字符串代表三种类型的信息:名称 \ HGVSc \ HGVSp。名称始终是每列一个,但 HGVSc \ HGVSp 进一步通过“ ; ”分隔为可变数量的字段,但“;”字段的数量对于沿其行向下的列标题始终相同。
对于每个仅由“;”分隔的“单元格”,它可以具有数字或仅“。”作为空值,并且数字的位置告诉单元格引用的标题中的 HGVSc 和 HGVSp 字段的子位置。
例如,在行 CLAM19_S18 的第一个单元格中,两个数字位于其自身的第 1 和第 2 个位置,分别指的是 HGVSc 和 HGVSp 的第 1 和第 2 个子字符串.... 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