如何将一行保存为一个带有计数器编号名称的文件

如何将一行保存为一个带有计数器编号名称的文件

我有一个这样的文件:

VLLKHCGRMRRFLIRNLRSFLSHISLNTLKSQESKV
LLSSQAKMYFSLRENFYLEGGIETTFVPSGEVYSRSFLKGISRI
LNPNALPTSPISENWVMVRPIVAQISLRRMTPSAIGAQTEMA
MKLELLLAFKYLIPKRKRLSSSIVSAFSMGIVALVVWLSVVFMSVIHGLQQRWVGDLASLHSSIRIEPSDKYYESYYYQIDSHAEASQYIYKTIGEKLLCEQTDPYDPDVDFLLPEAFPDPEFSDNGEMIDPVRTANERMLSLFSSRKGSFVEFEEGMGHVHMDRAFRGHKGEPRALSQYIAYSSDILYQQRMLPFEETDYSTEVLNRFNASSEGWLADFLVLQEKFRGMSVILPVVYRDQGYRVGDTASLSVFSVKKEGEVRFPLRVIGFYNPGVSPFGGKTIFIDKELAASIRSESEGLGMHNGWQVFLPSVQDIPVMKQSIQKIFKESEVSSYWEISSLYDYEFFKPILDQLQSDQVLFSIVSFIVLIVACSNIVTMSILLVNNKKKEIGILKAMGVSSSRLQLVFGLCGACSGLVGALLGSILAALTLKNLGILTHWLSKLQGREAFNPSFFGEQLPQDFHLPTVICLSLGALVLAAISGAIPAQHVARMQVSDILKSE
MVILVEAKHISKVIQQQDVCIPILKDVSFQLHAGEVVAITGASGSGKSSLLHLLGTLDQPSSGQILFFGKQVRREELPIFRNCRIGFIFQNFYLLEDDSVINNVLMPAQIARKDTGQKSKARERALALLESVGLVDRRDEKGSLLSGGEKQRVAIARALMNDPEIVLADEPSGNLDHRTADTIHELLLALAEKHRGVLIVTHDRELAEKCHREEILRDGTLMQRQ
LKDTVTPNYHPGMIRRFRPLTQTSTRSGYHKSE
LHVSCLEWLSMITFTRTPLRIAWARAKKNSGLKKIYIKTKILSVAWLIAFKIIFDAALGIKRWIGM
LADPVTTVWKSANIVFLCWRVLPLVRRKTTLEF
LARRRSGSFRGGRRSVFGSLVFSLGSGEHLLGDGY
VGARVRIDANRLSIPSMIVFIANNRRGLWVTIPF
VEEVGSGGLKRSLYFKEEEPCTLITLRSWLEKKET

我希望文件的每一行都保存在自己的文件中,其名称是原始文件的行号(123等)。我还需要在每个序列之前添加一行,以 a 开头>,然后是行号。

所以,1.txt将是:

>1
VLLKHCGRMRRFLIRNLRSFLSHISLNTLKSQESKV

和2.txt:

>2
LLSSQAKMYFSLRENFYLEGGIETTFVPSGEVYSRSFLKGISRI

等等。我怎样才能做到这一点?

答案1

你可以使用awk

awk '{print > NR".txt"}' file

NR是 中的当前行号awk,因此上面的命令会将每一行打印到一个文件中,该文件的名称是当前行号加上.txt.

如果您确实希望序列有>前缀,请使用以下命令:

awk '{print ">"$0 > NR".txt"}' file

>如果您想要正确的 FASTA 格式(每个序列前面都有以和序列名称开头的行),请使用以下命令:

awk '{printf ">%s\n%s\n",NR,$0 > NR".txt"}' file

这将产生如下文件:

$ cat 3.txt 
>3
LNPNALPTSPISENWVMVRPIVAQISLRRMTPSAIGAQTEMA

相关内容