我有一個4列文件(input.file)與頭:請在弦數數學(和文本使用awk解析)
something1 something2 A B
,然後用相同的格式很多4列行(例如, ):
ID_00001 1 0 0
ID_00002 0 1 0
ID_00003 1 0 0
ID_00004 0 0 1
ID_00005 0 1 0
ID_00006 0 1 0
ID_00007 0 0 0
ID_00008 1 0 0
其中, 「1 0 0」 代表 「AA」 的, 「0 1 0」 是指 「AB」 和 「0 0 1」 表示 「BB」
首先,我喜歡創建第5列來識別這些表示:
ID_00001 1 0 0 AA
ID_00002 0 1 0 AB
ID_00003 1 0 0 AA
ID_00004 0 0 1 BB
ID_00005 0 1 0 AB
ID_00006 0 1 0 AB
ID_00007 0 0 0 no data
ID_00008 1 0 0 AA
注意的是,A和B的需要從第3和標題行的4解析,因爲他們並不總是A和B.
接下來,我想「做數學」上用於(新)柱5計數如下:
(2BB + AB)/2(AA + AB + BB)
使用的例子中,數學會給:
(2(1)+ 3)/ 2(3 + 3 + 1)= 5/14 = 0.357
我想追加到所需的輸出文件(output.file)結束:
ID_00001 1 0 0 AA
ID_00002 0 1 0 AB
ID_00003 1 0 0 AA
ID_00004 0 0 1 BB
ID_00005 0 1 0 AB
ID_00006 0 1 0 AB
ID_00007 0 0 0 no data
ID_00008 1 0 0 AA
B_freq = 0.357
到目前爲止,我有這樣的:
awk '{ if ($2 = 1) {print $0, $5="AA"} \
else if($3 = 1) {print $0, $5="AB"} \
else if($4 = 1) {print $0, $5="BB"} \
else {print$0, $5="no data"}}' input.file > output.file
顯然,我沒能圖瞭解如何解析第1行的信息(標題行,編輯出「第1列」),更不用說數學了。
謝謝你們!
'...如何解析從塔1 ...'的信息? – karakfa
意思是第1行(標題行),對於 – gobot6
更爲具體,我不能夠(例如)解析標題行第3列中的「A」,並將它(兩次)放入後續「 1 0 0「行。 – gobot6