Perl从输入文件中删除新行并写入输出文件
Perl to remove new lines from input file and write to output file
我的输入是一个包含一系列字符串的文件,如下所示:
ABCDEFGHIJKL
XKGKASKGKD
SGJKSKGS
我想删除新行并将输出写入新文件:ABCDEFGHIJKLXKGKASKGKDSGJKSKGS
到目前为止我有这个:
#! /usr/bin/perl
use strict;
use warnings;
my $input = $ARGV[0];
my $output = "concatenated.txt"; #Output sequence
#Open output file
open >"$output"; or die "unable to open $output";
#Open input file
open "<$input" or die "unable to open $input";
while (<INPUT>) {
if( /^[AGCT]/)
chomp;
print $output;
}
close $input;
close $output;
print "Done!\n";
但是还不行。
在这种情况下 chomp 是否足以连接?
如何将我创建的内容写入输出文件?
您可以使用单线过滤器。
鉴于:
$ cat /tmp/so.txt
ABCDEFGHIJKL
XKGKASKGKD
SGJKSKGS
Perl(使用 -0777
到 gulp 整个文件):
$ perl -0777 -lpe 's/\s+//g;' /tmp/so.txt > /tmp/out.txt
或者,如果您不想 'gulp':
$ perl -pe 's/\s+//g' /tmp/so.txt > /tmp/out.txt
或tr
如果只是换行:
$ tr -d '\n' < /tmp/so.txt > /tmp/out.txt
其中任何一项:
$ cat /tmp/out.txt
ABCDEFGHIJKLXKGKASKGKDSGJKSKGS
所以,您似乎缺少文件句柄,而且我不确定您试图使用 if 语句完成什么。但是这里有一些代码可以接受您的输入并为您提供上面的输出:
use strict;
use warnings;
my $input = $ARGV[0];
my $output = "concatenated.txt"; #Output sequence
#Open output file
open (my $OUTPUT, '>', $output) or die "unable to open $output";
#Open input file
open (my $INPUT, '<', $input) or die "unable to open $input";
while (<$INPUT>) {
chomp;
$_ =~ s/\s+//g;
print $OUTPUT $_;
}
close $input;
close $output;
print "Done!\n";
如果您只想删除换行符并保留其余的空格,您可以删除 $_ =~ s/\s+//g;
行。
perl -pe 'chomp' infile > outfile
如果我猜对了 :-) 如果您的文件看起来像这样包含不止一个序列,您需要在 id 行和序列的最后一行之后保留换行符。
Perl 1 内衬可能是这样的:
perl -0777 -pe 's/^[TAGC]+\K\n(?!>)//gm' fasta.txt > concatenated.txt
-0777
表示将整个文件压缩成一个字符串。
这个替换表示匹配所有从行首开始的 [TAGC]
,(使用 \K
,保留之前的所有内容,不要删除)。然后是换行符\n
,后面没有跟>
,(下一行的开头是id)。
这会擦除新行,前提是它是序列行并且后面没有新的 id 行。 g
开关表示全局执行此操作,而 m
开关允许插入符号 ^
在 行 的开头匹配,而不是它通常的行为是在字符串的开头匹配。
>NR_037701 1
AGGAGCTATGAATATTAATGAAAGTGGTCCTGATGCATGCATATTAAACA
TGCATCTTACATATGACACATGTTCACCTTGGGGTGGAGACTTAATATTT
AAATATTGCAATCAGGCCCTATACATCAAAAGGTCTATTCAGGACATGAA
GGCACTCAAGTATGCAATCTCTGTAAACCCGCTAGAACCAGTCATGGTCG
GTGGGCTCCTTACCAGGAGAAAATTACCGAAATCACTCTTGTCCAATCAA
AGCTGTAGTTATGGCTGGTGGAGTTCAGTTAGTCAGCATCTGGTGGAGCT
GCAAGTGTTTTAGTATTGTTTATTTAGAGGCCAGTGCTTATTTAGCTGCT
AGAGAAAAGGAAAACTTGTGGCAGTTAGAACATAGTTTATTCTTTTAAGT
GTAGGGCTGCATGACTTAACCCTTGTTTGGCATGGCCTTAGGTCCTGTTT
GTAATTTGGTATCTTGTTGCCACAAAGAGTGTGTTTGGTCAGTCTTATGA
CCTCTATTTTGACATTAATGCTGGTTGGTTGTGTCTAAACCATAAAAGGG
AGGGGAGTATAATGAGGTGTGTCTGACCTCTTGTCCTGTCATGGCTGGGA
ACTCAGTTTCTAAGGTTTTTCTGGGGTCCTCTTTGCCAAGAGCGTTTCTA
TTCAGTTGGTGGAGGGGACTTAGGATTTTATTTTTAGTTTGCAGCCAGGG
TCAGTACATTTCAGTCACCCCCGCCCAGCCCTCCTGATCCTCCTGTCATT
CCTCACATCCTGTCATTGTCAGAGATTTTACAGATATAGAGCTGAATCAT
TTCCTGCCATCTCTTTTAACACACAGGCCTCCCAGATCTTTCTAACCCAG
GACCTACTTGGAAAGGCATGCTGGGTCTCTTCCACAGACTTTAAGCTCTC
CCTACACCAGAATTTAGGTGAGTGCTTTGAGGACATGAAGCTATTCCTCC
CACCACCAGTAGCCTTGGGCTGGCCCACGCCAACTGTGGAGCTGGAGCGG
GAGGGAGGAGTACAGACATGGAATTTTAATTCTGTAATCCAGGGCTTCAG
TTATGTACAACATCCATGCCATTTGATGATTCCACCACTCCTTTTCCATC
TCCCAGAAGCCTGCTTTTTAATGCCCGCTTAATATTATCAGAGCCGAGCC
TGGAATCAAACTGCCTCTTTCAAAACCTGCCACTATATCCTGGCTTTGTG
ACCTCAGCCAAGTTGCTTGACTATTCTCAGTCTCAGTTTCTGCACCTGTC
AAATAGGGTTTATGTTAACCTAACTTTCAGGGCTGTCAGGATTAAATGAG
CATGAACCACATAAAATGTTTGGTGTATAGTAAGTGTACAGTAAATACTT
CCATTATCAGTCCCTGCAATTCTATTTTTCTTCCTTCTCTACACAGCCCC
TGTCTGGCTTTAAAATGTCCTGCCCTGCTTTTTATGAGTGGATACCCCCA
GCCCTATGTGGATTAGCAAGTTAAGTAATGACACTCAGAGACAGTTCCAT
CTTTGTCCATAACTTGCTCTGTGATCCAGTGTGCATCACTCAAACAGACT
ATCTCTTTTCTCCTACAAAACAGACAGCTGCCTCTCAGATAATGTTGGGG
GCATAGGAGGAATGGGAAGCCCGCTAAGAGAACAGAAGTCAAAAACAGTT
GGGTTCTAGATGGGAGGAGGTGTGCGTGCACATGTATGTTTGTGTTTCAG
GTCTTGGAATCTCAGCAGGTCAGTCACATTGCAGTGTGTCGCTTCACCTG
GCTCCCTCTTTTAAAGATTTTCCTTCCCTCTTTCCAACTCCCTGGGTCCT
GGATCCTCCAACAGTGTCAGGGTTAGATGCCTTTTATGGGCCACTTGCAT
TAGTGTCCTGATAGAGGCTTAATCACTGCTCAGAAACTGCCTTCTGCCCA
CTGGCAAAGGGAGGCAGGGGAAATACATGATTCTAATTAATGGTCCAGGC
AGAGAGGACACTCAGAATTTCAGGACTGAAGAGTATACATGTGTGTGATG
GTAAATGGGCAAAAATCATCCCTTGGCTTCTCATGCATAATGCATGGGCA
CACAGACTCAAACCCTCTCTCACACACATACACATATACATTGTTATTCC
ACACACAAGGCATAATCCCAGTGTCCAGTGCACATGCATACACGCACACA
TTCCCTTCCTAGGCCACTGTATTGCTTTCCTAGGGCATCTTCTTATAAGA
CACCAGTCGTATAAGGAGCCCACCCCACTCATCTGAGCTTATCAACCAAT
TACATTAGGAAAGACTGTATTTCCTAGTAAGGTCACATTCAGTAGTACTG
AGGGTTGGGACTTCAACACAGCTTTTTGGGGGATCATAATTCAACCCATG
ACAGCCACTGAGATTATTATATCTCCAGAGAATAAATGTGTGGAGTTAAA
AGGAAGATACATGTGGTACAAGGGGTGGTAAGGCAAGGGTAAAAGGGGAG
GGAGGGGATTGAACTAGACACAGACACATGAGCAGGACTTTGGGGAGTGT
GTTTTATATCTGTCAGATGCCTAGAACAGCACCTGAAATATGGGACTCAA
TCATTTTAGTCCCCTTCTTTCTATAAGTGTGTGTGTGCGGATATGTGTGC
TAGATGTTCTTGCTGTGTTAGGAGGTGATAAACATTTGTCCATGTTATAT
AGGTGGAAAGGGTCAGACTACTAAATTGTGAAGACATCATCTGTCTGCAT
TTATTGAGAATGTGAATATGAAACAAGCTGCAAGTATTCTATAAATGTTC
ACTGTTATTAGATATTGTATGTCTTTGTGTCCTTTTATTCATGAATTCTT
GCACATTATGAAGAAAGAGTCCATGTGGTCAGTGTCTTACCCGGTGTAGG
GTAAATGCACCTGATAGCAATAACTTAAGCACACCTTTATAATGACCCTA
TATGGCAGATGCTCCTGAATGTGTGTTTCGAGCTAGAAAATCCGGGAGTG
GCCAATCGGAGATTCGTTTCTTATCTATAATAGACATCTGAGCCCCTGGC
CCATCCCATGAAACCCAGGCTGTAGAGAGGATTGAGGCCTTAAGTTTTGG
GTTAAATGACAGTTGCCAGGTGTCGCTCATTAGGGAAAGGGGTTAAGTGA
AAATGCTGTATAAACTGCATGATGTTTGCAGGCAGTTGTGGTTTTCCTGC
CCAGCCTGCCACCACCGGGCCATGCGGATATGTTGTCCAGCCCAACACCA
CAGGACCATTTCTGTATGTAAGACAATTCTATCCAGCCCGCCACCTCTGG
ACTCCCTCCCCTGTATGTAAGCCCTCAATAAAACCCCACGTCTCTTTTGC
TGGCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA
>NM_198399 1
AACAGATTTTAACTCTGAAAAGCCATTTCCAGTGTCTATAGACTATTGTG
AGCCTGGAGAAGTAGCATTTAGTTGGGATAGCTTCACTAGAGCTGCCTGC
CAAAGACTTCCTTCCACAGGATCTTGTCGCACCAGCAACTGACAGGAGCT
TGGGAGCTCGGGAGCTTGGGAGAGGGCTTATGTTTTTAATAATGTAGCTG
TCAGTTCGAAGCCTGGAAATGTTGACCCTCAAAGGGCATAAAATCTTGTT
ATTTTAATTTGCATCTGGGAGAATGTCTGAGCAAGGAGACCTGAATCAGG
CAATAGCAGAGGAAGGAGGGACTGAGCAGGAGACGGCCACTCCAGAGAAC
GGCATTGTTAAATCAGAAAGTCTGGATGAAGAGGAGAAACTGGAACTGCA
GAGGCGGCTGGAGGCTCAGAATCAAGAAAGAAGAAAATCCAAGTCAGGAG
CAGGAAAAGGTAAACTGACTCGCAGCCTTGCTGTCTGTGAGGAATCTTCT
GCCAGACCAGGAGGTGAAAGTCTTCAGGATCAGACTCTCTGAAAACTGCA
AATGGAAAGGAATTCAAAAGAATTTAGATTAAAAGTTAAATAAAAAGTAG
GCACAGTAGTGCTGAATTTTCCTCAAAGGCTCTCTTTTGATAAGGCTGAA
CCAAATATAATCCCAAGTATCCTCTCTCCTTCCTTGTTGGAGATGTCTTA
CCTCTCAGCTCCCCAAAATGCACTTGCCTATAAGAAACACAATTGCTGGT
TCATATGAAACTTAGGAAATAGTGAATAAGGTGCATTTAACTTTGGAGAA
ATACTTTTATGGCTTTGGTGGAGATTTCTCAATACTGCAAAAGTTGTCCA
GAAATGAATCTGAGCTGATGGTGACTTTAAGTTAATATTATTAATATATC
ACTGCATATTTTTACCCTTATTTTTGCTCCTTACAGCAAGATTAGTAGGT
TATAAAAATTTAAATTTAAACAAAATTATTTCATGACAAAATGGGAAACT
TCACATCATACTTATTTTTGTTTGCCTTTCAGGCATCATATTAGCTTTTA
TAAAAAATGGTCTTGCTGCTGAAATTGTACTTATTTTATCAGAGGCTGGG
TGCAGTCAAGACAAAAGTAAAATGGTTTACCTGAGCCCAGGGGAGGGAAA
ATTGATTAAGATATCATTATTTTTGTTTGGTTTGGTTTTGCTTTTTTCCT
CTTACTTTAATTGAAATACTCTGAATTCCCCTCATGGAAACAGAGAGCAT
TGAGAGCACTTTCTTTAAAAGGACCAAAAATAAATTCCTAATAGATTTTG
更新 如果您需要脚本中的解决方案,那么以下将产生与命令行相同的结果。
命令行是perl yourscript.pl fasta.txt
请注意,我没有显式打开 'fasta.txt',而是使用了空文件句柄 <>
。读入命令行指定的fasta文件。
#!/usr/bin/perl
use strict;
use warnings;
# Output sequence
my $output = "concatenated.txt";
open my $handle, '>', $output or die "unable to open $output";
my $current = <>;
while (my $next = <>) {
# if current line is seq characters (not a header)
# AND the next line isn't a header
if (substr($current, 0, 1) ne '>' && substr($next, 0, 1) ne '>') {
chomp($current)
}
print $handle $current;
$current = $next;
# print last line if at the end of file
print $handle $current if eof;
}
我的输入是一个包含一系列字符串的文件,如下所示:
ABCDEFGHIJKL
XKGKASKGKD
SGJKSKGS
我想删除新行并将输出写入新文件:ABCDEFGHIJKLXKGKASKGKDSGJKSKGS
到目前为止我有这个:
#! /usr/bin/perl
use strict;
use warnings;
my $input = $ARGV[0];
my $output = "concatenated.txt"; #Output sequence
#Open output file
open >"$output"; or die "unable to open $output";
#Open input file
open "<$input" or die "unable to open $input";
while (<INPUT>) {
if( /^[AGCT]/)
chomp;
print $output;
}
close $input;
close $output;
print "Done!\n";
但是还不行。
在这种情况下 chomp 是否足以连接?
如何将我创建的内容写入输出文件?
您可以使用单线过滤器。
鉴于:
$ cat /tmp/so.txt
ABCDEFGHIJKL
XKGKASKGKD
SGJKSKGS
Perl(使用 -0777
到 gulp 整个文件):
$ perl -0777 -lpe 's/\s+//g;' /tmp/so.txt > /tmp/out.txt
或者,如果您不想 'gulp':
$ perl -pe 's/\s+//g' /tmp/so.txt > /tmp/out.txt
或tr
如果只是换行:
$ tr -d '\n' < /tmp/so.txt > /tmp/out.txt
其中任何一项:
$ cat /tmp/out.txt
ABCDEFGHIJKLXKGKASKGKDSGJKSKGS
所以,您似乎缺少文件句柄,而且我不确定您试图使用 if 语句完成什么。但是这里有一些代码可以接受您的输入并为您提供上面的输出:
use strict;
use warnings;
my $input = $ARGV[0];
my $output = "concatenated.txt"; #Output sequence
#Open output file
open (my $OUTPUT, '>', $output) or die "unable to open $output";
#Open input file
open (my $INPUT, '<', $input) or die "unable to open $input";
while (<$INPUT>) {
chomp;
$_ =~ s/\s+//g;
print $OUTPUT $_;
}
close $input;
close $output;
print "Done!\n";
如果您只想删除换行符并保留其余的空格,您可以删除 $_ =~ s/\s+//g;
行。
perl -pe 'chomp' infile > outfile
如果我猜对了 :-) 如果您的文件看起来像这样包含不止一个序列,您需要在 id 行和序列的最后一行之后保留换行符。
Perl 1 内衬可能是这样的:
perl -0777 -pe 's/^[TAGC]+\K\n(?!>)//gm' fasta.txt > concatenated.txt
-0777
表示将整个文件压缩成一个字符串。
这个替换表示匹配所有从行首开始的 [TAGC]
,(使用 \K
,保留之前的所有内容,不要删除)。然后是换行符\n
,后面没有跟>
,(下一行的开头是id)。
这会擦除新行,前提是它是序列行并且后面没有新的 id 行。 g
开关表示全局执行此操作,而 m
开关允许插入符号 ^
在 行 的开头匹配,而不是它通常的行为是在字符串的开头匹配。
>NR_037701 1
AGGAGCTATGAATATTAATGAAAGTGGTCCTGATGCATGCATATTAAACA
TGCATCTTACATATGACACATGTTCACCTTGGGGTGGAGACTTAATATTT
AAATATTGCAATCAGGCCCTATACATCAAAAGGTCTATTCAGGACATGAA
GGCACTCAAGTATGCAATCTCTGTAAACCCGCTAGAACCAGTCATGGTCG
GTGGGCTCCTTACCAGGAGAAAATTACCGAAATCACTCTTGTCCAATCAA
AGCTGTAGTTATGGCTGGTGGAGTTCAGTTAGTCAGCATCTGGTGGAGCT
GCAAGTGTTTTAGTATTGTTTATTTAGAGGCCAGTGCTTATTTAGCTGCT
AGAGAAAAGGAAAACTTGTGGCAGTTAGAACATAGTTTATTCTTTTAAGT
GTAGGGCTGCATGACTTAACCCTTGTTTGGCATGGCCTTAGGTCCTGTTT
GTAATTTGGTATCTTGTTGCCACAAAGAGTGTGTTTGGTCAGTCTTATGA
CCTCTATTTTGACATTAATGCTGGTTGGTTGTGTCTAAACCATAAAAGGG
AGGGGAGTATAATGAGGTGTGTCTGACCTCTTGTCCTGTCATGGCTGGGA
ACTCAGTTTCTAAGGTTTTTCTGGGGTCCTCTTTGCCAAGAGCGTTTCTA
TTCAGTTGGTGGAGGGGACTTAGGATTTTATTTTTAGTTTGCAGCCAGGG
TCAGTACATTTCAGTCACCCCCGCCCAGCCCTCCTGATCCTCCTGTCATT
CCTCACATCCTGTCATTGTCAGAGATTTTACAGATATAGAGCTGAATCAT
TTCCTGCCATCTCTTTTAACACACAGGCCTCCCAGATCTTTCTAACCCAG
GACCTACTTGGAAAGGCATGCTGGGTCTCTTCCACAGACTTTAAGCTCTC
CCTACACCAGAATTTAGGTGAGTGCTTTGAGGACATGAAGCTATTCCTCC
CACCACCAGTAGCCTTGGGCTGGCCCACGCCAACTGTGGAGCTGGAGCGG
GAGGGAGGAGTACAGACATGGAATTTTAATTCTGTAATCCAGGGCTTCAG
TTATGTACAACATCCATGCCATTTGATGATTCCACCACTCCTTTTCCATC
TCCCAGAAGCCTGCTTTTTAATGCCCGCTTAATATTATCAGAGCCGAGCC
TGGAATCAAACTGCCTCTTTCAAAACCTGCCACTATATCCTGGCTTTGTG
ACCTCAGCCAAGTTGCTTGACTATTCTCAGTCTCAGTTTCTGCACCTGTC
AAATAGGGTTTATGTTAACCTAACTTTCAGGGCTGTCAGGATTAAATGAG
CATGAACCACATAAAATGTTTGGTGTATAGTAAGTGTACAGTAAATACTT
CCATTATCAGTCCCTGCAATTCTATTTTTCTTCCTTCTCTACACAGCCCC
TGTCTGGCTTTAAAATGTCCTGCCCTGCTTTTTATGAGTGGATACCCCCA
GCCCTATGTGGATTAGCAAGTTAAGTAATGACACTCAGAGACAGTTCCAT
CTTTGTCCATAACTTGCTCTGTGATCCAGTGTGCATCACTCAAACAGACT
ATCTCTTTTCTCCTACAAAACAGACAGCTGCCTCTCAGATAATGTTGGGG
GCATAGGAGGAATGGGAAGCCCGCTAAGAGAACAGAAGTCAAAAACAGTT
GGGTTCTAGATGGGAGGAGGTGTGCGTGCACATGTATGTTTGTGTTTCAG
GTCTTGGAATCTCAGCAGGTCAGTCACATTGCAGTGTGTCGCTTCACCTG
GCTCCCTCTTTTAAAGATTTTCCTTCCCTCTTTCCAACTCCCTGGGTCCT
GGATCCTCCAACAGTGTCAGGGTTAGATGCCTTTTATGGGCCACTTGCAT
TAGTGTCCTGATAGAGGCTTAATCACTGCTCAGAAACTGCCTTCTGCCCA
CTGGCAAAGGGAGGCAGGGGAAATACATGATTCTAATTAATGGTCCAGGC
AGAGAGGACACTCAGAATTTCAGGACTGAAGAGTATACATGTGTGTGATG
GTAAATGGGCAAAAATCATCCCTTGGCTTCTCATGCATAATGCATGGGCA
CACAGACTCAAACCCTCTCTCACACACATACACATATACATTGTTATTCC
ACACACAAGGCATAATCCCAGTGTCCAGTGCACATGCATACACGCACACA
TTCCCTTCCTAGGCCACTGTATTGCTTTCCTAGGGCATCTTCTTATAAGA
CACCAGTCGTATAAGGAGCCCACCCCACTCATCTGAGCTTATCAACCAAT
TACATTAGGAAAGACTGTATTTCCTAGTAAGGTCACATTCAGTAGTACTG
AGGGTTGGGACTTCAACACAGCTTTTTGGGGGATCATAATTCAACCCATG
ACAGCCACTGAGATTATTATATCTCCAGAGAATAAATGTGTGGAGTTAAA
AGGAAGATACATGTGGTACAAGGGGTGGTAAGGCAAGGGTAAAAGGGGAG
GGAGGGGATTGAACTAGACACAGACACATGAGCAGGACTTTGGGGAGTGT
GTTTTATATCTGTCAGATGCCTAGAACAGCACCTGAAATATGGGACTCAA
TCATTTTAGTCCCCTTCTTTCTATAAGTGTGTGTGTGCGGATATGTGTGC
TAGATGTTCTTGCTGTGTTAGGAGGTGATAAACATTTGTCCATGTTATAT
AGGTGGAAAGGGTCAGACTACTAAATTGTGAAGACATCATCTGTCTGCAT
TTATTGAGAATGTGAATATGAAACAAGCTGCAAGTATTCTATAAATGTTC
ACTGTTATTAGATATTGTATGTCTTTGTGTCCTTTTATTCATGAATTCTT
GCACATTATGAAGAAAGAGTCCATGTGGTCAGTGTCTTACCCGGTGTAGG
GTAAATGCACCTGATAGCAATAACTTAAGCACACCTTTATAATGACCCTA
TATGGCAGATGCTCCTGAATGTGTGTTTCGAGCTAGAAAATCCGGGAGTG
GCCAATCGGAGATTCGTTTCTTATCTATAATAGACATCTGAGCCCCTGGC
CCATCCCATGAAACCCAGGCTGTAGAGAGGATTGAGGCCTTAAGTTTTGG
GTTAAATGACAGTTGCCAGGTGTCGCTCATTAGGGAAAGGGGTTAAGTGA
AAATGCTGTATAAACTGCATGATGTTTGCAGGCAGTTGTGGTTTTCCTGC
CCAGCCTGCCACCACCGGGCCATGCGGATATGTTGTCCAGCCCAACACCA
CAGGACCATTTCTGTATGTAAGACAATTCTATCCAGCCCGCCACCTCTGG
ACTCCCTCCCCTGTATGTAAGCCCTCAATAAAACCCCACGTCTCTTTTGC
TGGCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA
>NM_198399 1
AACAGATTTTAACTCTGAAAAGCCATTTCCAGTGTCTATAGACTATTGTG
AGCCTGGAGAAGTAGCATTTAGTTGGGATAGCTTCACTAGAGCTGCCTGC
CAAAGACTTCCTTCCACAGGATCTTGTCGCACCAGCAACTGACAGGAGCT
TGGGAGCTCGGGAGCTTGGGAGAGGGCTTATGTTTTTAATAATGTAGCTG
TCAGTTCGAAGCCTGGAAATGTTGACCCTCAAAGGGCATAAAATCTTGTT
ATTTTAATTTGCATCTGGGAGAATGTCTGAGCAAGGAGACCTGAATCAGG
CAATAGCAGAGGAAGGAGGGACTGAGCAGGAGACGGCCACTCCAGAGAAC
GGCATTGTTAAATCAGAAAGTCTGGATGAAGAGGAGAAACTGGAACTGCA
GAGGCGGCTGGAGGCTCAGAATCAAGAAAGAAGAAAATCCAAGTCAGGAG
CAGGAAAAGGTAAACTGACTCGCAGCCTTGCTGTCTGTGAGGAATCTTCT
GCCAGACCAGGAGGTGAAAGTCTTCAGGATCAGACTCTCTGAAAACTGCA
AATGGAAAGGAATTCAAAAGAATTTAGATTAAAAGTTAAATAAAAAGTAG
GCACAGTAGTGCTGAATTTTCCTCAAAGGCTCTCTTTTGATAAGGCTGAA
CCAAATATAATCCCAAGTATCCTCTCTCCTTCCTTGTTGGAGATGTCTTA
CCTCTCAGCTCCCCAAAATGCACTTGCCTATAAGAAACACAATTGCTGGT
TCATATGAAACTTAGGAAATAGTGAATAAGGTGCATTTAACTTTGGAGAA
ATACTTTTATGGCTTTGGTGGAGATTTCTCAATACTGCAAAAGTTGTCCA
GAAATGAATCTGAGCTGATGGTGACTTTAAGTTAATATTATTAATATATC
ACTGCATATTTTTACCCTTATTTTTGCTCCTTACAGCAAGATTAGTAGGT
TATAAAAATTTAAATTTAAACAAAATTATTTCATGACAAAATGGGAAACT
TCACATCATACTTATTTTTGTTTGCCTTTCAGGCATCATATTAGCTTTTA
TAAAAAATGGTCTTGCTGCTGAAATTGTACTTATTTTATCAGAGGCTGGG
TGCAGTCAAGACAAAAGTAAAATGGTTTACCTGAGCCCAGGGGAGGGAAA
ATTGATTAAGATATCATTATTTTTGTTTGGTTTGGTTTTGCTTTTTTCCT
CTTACTTTAATTGAAATACTCTGAATTCCCCTCATGGAAACAGAGAGCAT
TGAGAGCACTTTCTTTAAAAGGACCAAAAATAAATTCCTAATAGATTTTG
更新 如果您需要脚本中的解决方案,那么以下将产生与命令行相同的结果。
命令行是perl yourscript.pl fasta.txt
请注意,我没有显式打开 'fasta.txt',而是使用了空文件句柄 <>
。读入命令行指定的fasta文件。
#!/usr/bin/perl
use strict;
use warnings;
# Output sequence
my $output = "concatenated.txt";
open my $handle, '>', $output or die "unable to open $output";
my $current = <>;
while (my $next = <>) {
# if current line is seq characters (not a header)
# AND the next line isn't a header
if (substr($current, 0, 1) ne '>' && substr($next, 0, 1) ne '>') {
chomp($current)
}
print $handle $current;
$current = $next;
# print last line if at the end of file
print $handle $current if eof;
}