我有一個 FASTA 檔案的形式
ABCNA929-08|Lymantria_dispar_dispar|COI-5P|MF131764
我想提取第一個“|”之前的所有內容 分隔符,即ABCNA929-08
這在 Bash 中是最簡單的,但我不是常用用戶,所以我不確定解決方案。
uj5u.com熱心網友回復:
使用 AWK:
awk -F"|" '/\|/ {print $1}' file.fasta
解釋:使用“|” 作為分隔符,搜索包含“|”的行 字符(僅 FASTA 標題,而不是 >ATCGA...等)并列印第一個欄位(即直到第一個“|”的所有內容)。
或者,使用 bash:
while read -r line; do [[ $line =~ '|' ]] && echo ${line/|*/}; done < file.fasta
這能解決你的問題嗎?
uj5u.com熱心網友回復:
請您嘗試以下方法:
sed -E 's/^>?([^|] ).*/\1/' file.fasta
輸出:
ABCNA929-08
>它可以在 FASTA 標頭中使用或不使用前導字符。
^>?匹配行首的零個或一個>字符。([^|] )匹配除 . 之外的任何字符序列|。匹配的子字串被捕獲為\1。.*匹配要洗掉的剩余字符。- 替換
s/^>?([^|] ).*/\1/將匹配的子字串以外的字符洗掉為\1.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/432620.html
標籤:重击
