2、awk的輸出


1、常見的輸出格式整理

awk '{print "this is " $1, $2, $1*$2, NR, NF, $NF}' file1   ###字符輸出,字段輸出,運算輸出,內置變量輸出等,默認空格分開;$1 ,$2調換順序打印隨之變化

awk 'BEGIN{FS=OFS="\t"} {print $1,$2 }' file2  ###讀入字段分割,輸出字段分割

 awk -F '[ :\t|]' '{print $1}' file          ##可以有多個分割符

awk  {printf ("this is\t%d\t%.2f %s %s %s\n",NR,NF,$1,$2,$NF)}'  file3 ###printf( )不自動換行;%d ,%.2f, %s;字段分割也可以指定

awk '{$2="";print }' file  ##不打印第二列

 

2、選擇

數字選擇:awk '$2 > 10{print}' file    ###+   -  *   /    %  ^ ; >=   <=   !=   ==  ; ~    !~   /gene/ || /mNA/

字符選擇 :awk ‘$2 == "gene" {print}’ file 

    awk '/mRNA/{match($9,/ID=(.*);P/,a);printf "%s\t%s\t%d\t%d\n",$1,a[1],$4,$5}' Chr_genome_final_gene.gff3  ##生成circos的gff文件

    awk '{gsub(/gene/,"gene_id",$3);print}' Chr_genome_final_gene.gff3|less          ##替換處理

 

正則匹配:awk ‘ /gene/ {print}’ file   ###^   $   .   []  \  | () * + ?

組合選擇:&& || ! 和and  or not

      awk ‘$2 >=10 && $3<=20 {print}’ file

文本處理開始於結束BEGIN{} END{}

 

3、計算

數字計算:awk '{a+=2}END{print a}' file      

字符串聯:awk '{a = a " " $1} END{print a}' file   或者  awk '{a = a $1 " "} END{print a}' file

總行以及最后一行:awk '{last = $0}END{print NR, last}' file     

內建函數:length($0)          ##$0不包含換行符

每一行所有字段和:awk '{ sum = 0; for( i = 4; i <= 5; i++){printf("%d\t" , $i); sum += $i };print sum }'    ##打印4,5列,計算每行的4到5列的和

所有行字段和:awk '{ for( i = 4; i <= 5; i++){ sum+=$i }}END{ print sum }'

 

4、流程控制語句

if() print else print

while(){}

for (i=0; i<=5;i++){}

for (i  in  a) {}

next  ; break

 

4、數組

awk '{a[NR] = $0} END{ for(i = 1;i <= NR;i++)print a[i]}' file

 

5、常用內建字符串函數

index(r , t)    match(s , r ,arr)   sprintf   split(s ,arr, fs)   gsub(r ,s, tar)   substr(s, star, len)        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM