zoukankan      html  css  js  c++  java
  • awk之match函数

    功能:match函数是用于个性化定制搜索模式。

    例子:

       文件内容:

    this is wang ,not wan

    that is chen, not che 

    this is chen ,and wang ,not wan che 

      思路:

    比如你想提取is后面的第一个单词,和not 后面的第一个单词,

    这时候利用位置来提取是不可行的,因为第三行的模式和前两行不一致,这种情况在基因注解里经常会碰到。

    这是就可以用awk的match函数啦!!

    [wangjq@mgmt humandb]$ cat test
    this is wang,not wan
    that is chen,not che 
    this is chen,and wang,not wan che 
    [wangjq@mgmt humandb]$ awk '{match($0,/.+is([^,]+).+not(.+)/,a);print a[1],a[2]}' test
     wang  wan
     chen  che 
     chen  wan che 
    

    格式:match(string,regexp,array)  和string~regexp的作用类似

    没有array的情况下:通过regexp,在string中寻找最左边,最长的substring,返回substring的index位置。

    有array的情况下:在regexp中用()将要组成的array的内容按顺序弄好,a[1]代表第一个()的内容,a[2]代表第二个()的内容,以此类推。

    echo "gene_type  "mrna";gene_name "typ""|awk 'match($0,/(gene_type).+(".+?");gene_name/,a){print a[1]}'
    gene_type
    
    echo "gene_type  "mrna";gene_name "typ""|awk 'match($0,/(gene_type).+("+?");gene_nae/,a){print a[2]}'
    mrna
    

      

    拒绝低效率勤奋,保持高效思考
  • 相关阅读:
    PHP去除所有的空格
    PHP学习之分页类
    PHP学习之验证码类
    PHP学习之迭代生成器
    PHP学习之PHP trait解析
    PHP学习之PHP代码的优化
    PHP学习之PHP的语法糖
    PHP学习之PHP编码习惯
    PHP介绍
    Centos7安装PHP、安装MySQL、安装apache
  • 原文地址:https://www.cnblogs.com/timeisbiggestboss/p/7242351.html
Copyright © 2011-2022 走看看