linux 遍历文件中的每个“偶数”行[已关闭]

qmelpv7a  于 2023-02-11  发布在  Linux
关注(0)|答案(2)|浏览(110)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
我有一个fasta文件,结构如下。对于上下文,一个fasta文件是一个简单的文本文件,文件头用'〉'表示,文件头下面是文本。我想创建一个for循环,可以遍历这个fasta文件的每一个偶数行。
文件名为chicken_topmotifs.fasta

>gene8
ATGAATTATTATACACCTCAAATACTCTCCTCAATCTCTCCAACATTCCCCACCACAATTCTCGGTGACTTTACTACACTTCTACAATCATACACTTCT

>gene12
ATGGTAGATCTCTATTACGATTATCTTTCTTAGATCACATAATTATCACCCCCCCTTATAAATCTACACTTCTACAACCAATTACACTTCTACAAAACA
>gene18
ATGCTTTTACACTTCTACAACTACTTTTAACTCGATACTTCTACAATCTACACATATCACAATAACAAAAACAAAAAGCTACTAATATATATATATACA
>gene21
ATGTCTCAATTTCACCAATCTATAATTTACTACGCCGTACTCTTTATAACCTTACTTTCTTAAATAACATTACACTTCTACATTACATATTTTACATCA
for sequence in chicken_topmotifs.fasta;
do
    echo $sequence
done
n6lpvg4x

n6lpvg4x1#

每次循环读两次,第一次读奇数行,第二次读偶数行。

while read -r gene; do
    read -r sequence
    # do stuff with $sequence
done < chicken_topmotifs.fasta
sirbozc5

sirbozc52#

假设:

  • 忽略标题(>)行
  • 忽略空行

一个bash创意:

while read -r sequence
do
      echo "$sequence"
done < <(grep '^[ATGC]' chicken_topmotifs.fasta)

如果我们不必担心空行:

while read -r sequence
do
      echo "$sequence"
done < <(grep -v '^>' chicken_topmotifs.fasta)

这两种方法都会产生:

ATGAATTATTATACACCTCAAATACTCTCCTCAATCTCTCCAACATTCCCCACCACAATTCTCGGTGACTTTACTACACTTCTACAATCATACACTTCT
ATGGTAGATCTCTATTACGATTATCTTTCTTAGATCACATAATTATCACCCCCCCTTATAAATCTACACTTCTACAACCAATTACACTTCTACAAAACA
ATGCTTTTACACTTCTACAACTACTTTTAACTCGATACTTCTACAATCTACACATATCACAATAACAAAAACAAAAAGCTACTAATATATATATATACA
ATGTCTCAATTTCACCAATCTATAATTTACTACGCCGTACTCTTTATAACCTTACTTTCTTAAATAACATTACACTTCTACATTACATATTTTACATCA

相关问题