美文网首页
【AWK】 部分技巧

【AWK】 部分技巧

作者: Silver_42ac | 来源:发表于2019-10-14 21:26 被阅读0次

    【AWK】 部分技巧

    1、split

    split($9,a,";");
    a[0]
    a[1]
    

    a 是python 中的列表(自动根据存入数据类型,变为什么变量)

    这里意思是使用分隔符 “;” ,分割第9列,分割元素存入a

    可以作为列表,取相应的元素 a[0];a[1]

    2、gsub

    gsub("Ref","",$9);
    

    单独一句,替换,这里是讲第9列 内容 "Ref" 替换为空字符串 "",直接在第九列$9生效

    3、输入文件分隔符 FS

    FS( Field Separator ) : 列分割符。决定了怎么将一行划分为几段。预设值是 空白符(空白和Tab)

    
    awk ' FS=";" {print $1} ' 
    
    

    以";",作为分隔符,输入元素

    4、输出文件分隔符 OFS

    awk ' OFS="\t" {print $1,$3,$4}
    

    以tab,作为分隔符,输入元素;输出的内容是 第一、三、四列使用tab链接的字符串

    5、读多个文件

    (1)多文件区分读取

    ARGIND :输入文件编号

    awk 'ARGIND==1{ print NR }ARGIND==2{ print  FNR }' A.gff  B.fa
    

    ARGIND==1{ do samething } 就是读 第一个参数 A.gff 时 做的操作

    ARGIND==2{ do samething } 就是读 第二个参数 B.fa 时 做的操作

    (2)多文件判断

    NR:表示awk开始执行程序后所读取的数据行数。

    FNR:awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。

    NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件。

    awk ' NR==FNR{ do something }NR!=FNR{ do something }' A.gff  B.fa
    

    当NR 等于 FNR 时就是在读取第一个文件的时候

    当NR 不等于 FNR 时就是再读取第二个文件的时候

    和上面 ARGIND==1 ARGIND==2 同样作用,不过这种方法只能用于两个文件;两个以上文件需要用ARGIND 进行判断

    5、哈希hash (字典dict)

    和python 中的 字典一个意思

    awk '{ a[$1]=$2;print a[$1]}'
    

    直接就存入变量名a 中;自动按照字典方式存入

    调用只需要a[ key ]即可, 变量名,可以随意不用a也行

    6、匹配判断

    if($0~/^>/){do  something}
    

    匹配的含义就是字符串中是否能找到/中的匹配内容/; 而// 中可以直接写正则表达式 表示一定规律的内容

    正则表达式解释:

    /^>/ 解释 :// 中的^ 三角角标 表示字符串"最前面" ; 这句话表示去匹配最前面的>大于号

    结构

    被匹配的字符串~/匹配内容/

    ~ 表示匹配

    // 则用来限制匹配内容的范围

    不匹配判断则是

    if($0!~/^>/){do  something}
    

    解读一个例子;进行学习

    awk 'ARGIND==1{if($3~/mRNA/){split($9,a,"ID=AA_");split(a[2],b,";");if($1~/LG/){split($1,c,"LG");$2="AA_"c[2]"g"b[1]}else{split($1,c,"scaffold_");$2="AA_"c[2]"s"b[1]}; d[">AA"b[1]]=$2;line=$1"\t"$2"\t"$4"\t"$5"\tAA"b[1];print line >>"genomic.new.mod.gff" }}ARGIND==2{if($0~/^>/){$1=">"d[$1]};{print $0 >>"aoaas.pep.mod.fa"}}' aoaas.gff aoaas.pep.fa
    

    相关文章

      网友评论

          本文标题:【AWK】 部分技巧

          本文链接:https://www.haomeiwen.com/subject/ugudmctx.html