![如何将一行保存为一个带有计数器编号名称的文件](https://linux22.com/image/89012/%E5%A6%82%E4%BD%95%E5%B0%86%E4%B8%80%E8%A1%8C%E4%BF%9D%E5%AD%98%E4%B8%BA%E4%B8%80%E4%B8%AA%E5%B8%A6%E6%9C%89%E8%AE%A1%E6%95%B0%E5%99%A8%E7%BC%96%E5%8F%B7%E5%90%8D%E7%A7%B0%E7%9A%84%E6%96%87%E4%BB%B6.png)
我有一个这样的文件:
VLLKHCGRMRRFLIRNLRSFLSHISLNTLKSQESKV
LLSSQAKMYFSLRENFYLEGGIETTFVPSGEVYSRSFLKGISRI
LNPNALPTSPISENWVMVRPIVAQISLRRMTPSAIGAQTEMA
MKLELLLAFKYLIPKRKRLSSSIVSAFSMGIVALVVWLSVVFMSVIHGLQQRWVGDLASLHSSIRIEPSDKYYESYYYQIDSHAEASQYIYKTIGEKLLCEQTDPYDPDVDFLLPEAFPDPEFSDNGEMIDPVRTANERMLSLFSSRKGSFVEFEEGMGHVHMDRAFRGHKGEPRALSQYIAYSSDILYQQRMLPFEETDYSTEVLNRFNASSEGWLADFLVLQEKFRGMSVILPVVYRDQGYRVGDTASLSVFSVKKEGEVRFPLRVIGFYNPGVSPFGGKTIFIDKELAASIRSESEGLGMHNGWQVFLPSVQDIPVMKQSIQKIFKESEVSSYWEISSLYDYEFFKPILDQLQSDQVLFSIVSFIVLIVACSNIVTMSILLVNNKKKEIGILKAMGVSSSRLQLVFGLCGACSGLVGALLGSILAALTLKNLGILTHWLSKLQGREAFNPSFFGEQLPQDFHLPTVICLSLGALVLAAISGAIPAQHVARMQVSDILKSE
MVILVEAKHISKVIQQQDVCIPILKDVSFQLHAGEVVAITGASGSGKSSLLHLLGTLDQPSSGQILFFGKQVRREELPIFRNCRIGFIFQNFYLLEDDSVINNVLMPAQIARKDTGQKSKARERALALLESVGLVDRRDEKGSLLSGGEKQRVAIARALMNDPEIVLADEPSGNLDHRTADTIHELLLALAEKHRGVLIVTHDRELAEKCHREEILRDGTLMQRQ
LKDTVTPNYHPGMIRRFRPLTQTSTRSGYHKSE
LHVSCLEWLSMITFTRTPLRIAWARAKKNSGLKKIYIKTKILSVAWLIAFKIIFDAALGIKRWIGM
LADPVTTVWKSANIVFLCWRVLPLVRRKTTLEF
LARRRSGSFRGGRRSVFGSLVFSLGSGEHLLGDGY
VGARVRIDANRLSIPSMIVFIANNRRGLWVTIPF
VEEVGSGGLKRSLYFKEEEPCTLITLRSWLEKKET
我希望文件的每一行都保存在自己的文件中,其名称是原始文件的行号(1
、2
、3
等)。我还需要在每个序列之前添加一行,以 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