我找到了用于決議 sdf 檔案的代碼,但我不能忽略空格,這就是 Ki (nm) 輸出不顯示的原因。
我的檔案如下所示:
> <Ligand InChI Key>
CPZBLNMUGSZIPR-NVXWUHKLSA-N
> <BindingDB MonomerID>
50417287
> <BindingDB Ligand Name>
Aloxi::Aurothioglucose::PALONOSETRON::PALONOSETRON HYDROCHLORIDE
> <Target Name Assigned by Curator or DataSource>
5-hydroxytryptamine receptor 3A
> <Target Source Organism According to Curator or DataSource>
Homo sapiens
> <Ki (nM)>
0.0316
> <IC50 (nM)>
> <Kd (nM)>
> <EC50 (nM)>
---------------------------
awk -v OFS='\t' '
/^>/ { tag=$2; next }
NF { f[tag]=$1 }
$0 == "$$$$" {print f["<pH>"], f["<PMID>"], f["<Ki (nM)>"] }
' P46098.sdf
謝謝!
uj5u.com熱心網友回復:
請嘗試match()提取<和>包含之間的標簽的功能。
awk -v OFS='\t' '
/^>/ { match($0, /<. >/); tag = substr($0, RSTART, RLENGTH); next }
NF { f[tag]=$1 }
$0 == "$$$$" {print f["<pH>"], f["<PMID>"], f["<Ki (nM)>"] }
' P46098.sdf
-
如果正則運算式匹配分配 awk 變數和
匹配子字串的起始位置和長度,則該函式
match($0, /<. >/)回傳一個非零值。<. >$0RSTARTRLENGTH - 正則運算式
<. >匹配以 . 開頭<和結尾的子字串>。子字串可能包含空白字符。 substr($0, RSTART, RLENGTH)回傳$0開始于RSTART和字符長度的子字串RLENGTH。然后將變數tag分配給它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/512179.html
標籤:linux重击解析自卫队
