簡體   English   中英

通過AWK腳本寫入輸出文件時出錯

[英]Error in writing output file through AWK scripting

我有一個AWK腳本,可將與特定模式匹配的特定值寫入.csv文件。 代碼如下:

BEGIN{print "Query Start,Query End, Target Start, Target End,Score, E,P,GC"}
/^\>g/ { Query=$0 }
 /Query =/{
    split($0,a," ")
    query_start=a[3]
    query_end=a[5]
    query_end=gsub(/,/,"",query_end)
    target_start=a[8]
    target_end=a[10]
    }
    /Score =/{
    split($0,a," ")
    score=a[3]
    score=gsub(/,/,"",score)
    e=a[6]
    e=gsub(/,/,"",e)
    p=a[9]
    p=gsub(/,/,"",p)
    gc=a[12]

    printf("%s,%s,%s,%s,%s,%s,%s,%s\n",query_start, query_end,target_start,target_end,score,e,p,gc)
    }

輸入文件如下:

>gi|ABCDEF|

 Plus strand results:

 Query = 100 - 231, Target = 100 - 172
 Score = 20.92, E = 0.01984, P = 4.309e-08, GC =  51

但是我收到了.csv文件中的輸出,如下所示:

100 0   100 172 0   0   0   51

程序無法復制以下值:查詢結束得分EP(注意:所有失敗的值都在逗號(,)之前出現)

獲得正確輸出的任何幫助將是巨大的。

最好的祝福,

阿米特

如@Jidder所述,您無需調用split(),而如@jaypal所述,您使用的gsub()錯誤,但是如果您只包含了,也根本不需要調用gsub()。 FS。

嘗試這個:

BEGIN {
    FS = "[[:space:],]+"
    OFS = ","
    print "Query Start","Query End","Target Start","Target End","Score","E","P","GC"
}
/^\>g/ { Query=$0 }
/Query =/ {
    query_start=$4
    query_end=$6
    target_start=$9
    target_end=$11
}
/Score =/ {
    score=$4
    e=$7
    p=$10
    gc=$13

    print query_start,query_end,target_start,target_end,score,e,p,gc
}

那工作嗎 請注意,字段編號被1淘汰,因為當您不使用默認的FS awk時,不再跳過前導空白,因此輸入中的空白之前會有一個空白字段。

顯然,您沒有使用Query變量,因此填充它的行是多余的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM