use*_*373 3 linux sed awk perl regular-expression
我有一个这样的文件:
A1-1915435_1_MIMAT0000069_MirBase_miR-16_microRNA_1_22-A1-1915435_1_ENSG00000206737_ENST00000384010_U1_snRNA_73_115
A1-2362643_1_MIMAT0000732_MirBase_miR-378_microRNA_1_21-A1-2362643_1_ENSG00000222328_ENST00000410396_U2_snRNA_168_211
Run Code Online (Sandbox Code Playgroud)
我想要一个输出,其中我将 micro RNA 部分和 ENSG 部分选项卡分开。像这样的事情:
miR-16_microRNA ENSG00000206737
miR-378_microRNA ENSG00000222328
Run Code Online (Sandbox Code Playgroud)
我可以为它编写一个 perl 脚本,但我想必须有使用 awk、sed perl 等的命令行解决方案。
perl -pe 's!.*(miR-\d+_microRNA).*(ENSG\d+).*!$1\t$2!'
Run Code Online (Sandbox Code Playgroud)
解释一下?
当然,对不起:
$1 tab $2where
替换正则表达式$1并$2编号为捕获组的反向引用(...)。几乎所有现代正则表达式引擎都支持这一点。. = 任何字符,除了 \n.* = 一个字符序列(在替换中被忽略)\d= 数字(与 相同[0-9])\d+ = 一个或多个 \d请参阅任何reg 表达式教程以获得更详细的解释。
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |