我有一個如下組織的長列表(INPUT)。 我想分割數據,以便我得到如下輸出(所需的OUTPUT)。unix使用循環,awk和拆分拆分FASTA
下面的代碼首先標識包含「> gi」的所有行,並將這些行的行數保存在一個名爲B的數組中。 然後,在新文件中,應該用數組B中的行縮短版本之後的文字
我認爲最簡單的方法是在「|」處分割,但這不起作用(如果我用「|」替換「」,我的代碼不會發生分離)
我的代碼在下面,在「」之後很好地分割「」,通過「」在INPUT,但是我遇到麻煩時,我想要得到的[]括號內的文字,這並不總是存在,而且並不總是隻有2個字...:
B=$(grep -n ">gi" 1VAO_1DII_5fxe_all_hits_combined.txt | cut -d : -f 1)
awk <1VAO_1DII_5fxe_all_hits_combined.txt >seqIDs_1VAO_1DII_5fxe_all_hits_combined.txt -v lines="$B" '
BEGIN {split(lines, a, " "); for (i in a) change[a[i]]=1}
NR in change {$0 = ">" $4}
1
'
讓我知道如果需要更多解釋!
INPUT:
>gi|9955361|pdb|1E0Y|A:1-560 Chain A, Structure Of The D170sT457E DOUBLE MUTANT OF VANILLYL- Alcohol Oxidase
MSKTQEFRPLTLPPKLSLSDFNEFIQDIIRIVGSENVEVISSKDQIVDGSYMKPTHTHDPHHVMDQDYFLASAIVA
>gi|557721169|dbj|GAD99964.1|:1-560 hypothetical protein NECHADRAFT_63237 [Byssochlamys spectabilis No. 5]
MSETMEFRPMVLPPNLLLSEFNGFIRETIRLVGCENVEVISSKDQIHDGSYMDPRHTHDPHHIMEQDYFLASAIVAPRNV
期望的輸出:
>1E0Y
MSKTQEFRPLTLPPKLSLSDFNEFIQDIIRIVGSENVEVISSKDQIVDGSYMKPTHTHDPHHVMDQDYFLASAIVAPRNV
>GAD99964.1 Byssochlamys spectabilis No. 5
MSETMEFRPMVLPPNLLLSEFNGFIRETIRLVGCENVEVISSKDQIHDGSYMDPRHTHDPHHIMEQDYFLASAIVA
這對於非強迫性讀者來說是非常複雜的嘗試和解析。難道你不能做一個20字符的2行輸入,讓人們很容易看到問題並幫助你解決嗎?此外,我認爲展示輸入和輸出使得問題解決更自然。祝你好運。 – shellter
感謝您的建議,編輯已經作出 – gugy
您的問題再次使用'{}'按鈕來格式化您的輸入和輸出,就像您的代碼一樣。 –