我有一个文本文件,下面显示了文件内容的示例:
1234一个新的同源结构域编码基因与一个大的CpG岛有关,该岛被肌营养不良不稳定(CTG)n重复序列所打断。肌营养不良(DM)与蛋白激酶编码基因DMPK的( CTG )n三核苷酸重复扩增有关,该基因位于19q13染色体上。3.这种基因在病人组织中表达的特征,迄今产生了关于DMPK mRNA稳态水平的变化和在存在扩张时的最终DMPK蛋白水平的相互矛盾的数据。19号染色体的DM区基因丰富,重复扩增可能导致附近多个转录单元功能障碍,可能是染色质断裂的结果。我们已经在DMPK的3端寻找与CpG岛相关的基因。该区域的序列显示,该岛屿延伸超过3个。5kb,被( CTG )n重复序列打断。在人类和小鼠的基因组序列下游(着丝粒)的比较,确定了具有显著同源性的区域。它们对应于预测编码同源结构域蛋白的基因的外显子。RT-PCR分析表明,该基因被称为DM位点相关同源结构域蛋白( DMAHP ),在骨骼肌、心脏和大脑等多种组织中均有表达。
我需要提取标记之间的内容:例如,
<category="SpecificDisease">Myotonic dystrophy</category>我需要提取“肌营养不良”并写入一个新的文本文件。
发布于 2013-11-07 13:51:09
您可以使用grep查找标记之间的文本,然后使用sed删除标记本身:
$ grep -oP '<category.+?>.*?</category>' file.txt | sed 's/<.*>\(.*\)<.*>/\1/'
myotonic dystrophy
Myotonic dystrophy
DM
DM
DMgrep -oP:-P为grep启用了PCRE,-o使其只打印匹配的字符串。'<category.+?>.*?</category>':这告诉grep搜索打开和关闭category标记之间的所有内容。sed 's/<.*>\(.*\)<.*>/\1/':上面grep的输出通过管道传输到sed,后者只需将标记替换为它们的内容(这里是\1,因为使用了括号来捕获它们)。发布于 2013-11-07 07:55:33
这可以通过PCRE完成,我已经尝试过了。但还没有完全理解。
下面是我尝试和工作的例子:
grep -oP '(?:<category=[A-Za-z\"\s]*>)[A-Za-z\s]+(?:<\/category>)' input|\
awk -F">" '{split($2,a,"<"); print a[1]}'https://unix.stackexchange.com/questions/99179
复制相似问题