有时需要将整个⽬录下的⼩⽂件合并到⼀个⽂件中,以便查阅检索
特性
整个⽬录完全遍历,⾃动存⼊单个⽂件
顺序遍历⽂件
待合并的⽬录
合并后的⽂件内容
syscfg/test1
syscfg/test2
uart/uart7/uart7_dma1
uart/uart7/uart7_dma2
wwdg/prescaler
Perl代码
#!/usr/bin/perl
use warnings
###########################################
#./mergelst.pl lst
###########################################
my $indir = $ARGV[0]
opendir DIR, $indir or die "Connot open $indir: $!"#得到⽬录句柄
unlink "temp.lst"
open(OUTFILE, ">>temp.lst") || die ("Could not open file temp.lst ! \n")#输出⽂件句柄
foreach my $file (sort readdir DIR){ #⽬录下⽂件排序后遍历⽂件
if($file =~ /^\./){
next#'.''..'⽬录去除,不包括在遍历的范围之内
}
print "$indir$file\n"
open(INFILE, "$indir/$file") || die ("Could not open file $file ! \n")#打开⽬录下的⽂件 while ($line = <INFILE>){ #循环输出到输出⽂件中,合并 chomp($line)
print OUTFILE "$line \n"
}
print OUTFILE "\n\n"
close INFILE
}
close OUTFILE
rename 'temp.lst','merge_lst'#⽂件重名名
print "\n merge_lst\n\n"
¥
6
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
使用Perl合并文件
使⽤Perl合并⽂件使⽤Perl合并⽂件
有时需要将整个⽬录下的⼩⽂件合并到⼀个⽂件中,以便查阅检索
特性
整个⽬录完全遍历,⾃动存⼊单个⽂件
顺序遍历⽂件
待合并的⽬录
合并后的⽂件内容
syscfg/test1
syscfg/test2
第 1 页
uart/uart7/uart7_dma1
uart/uart7/uart7_dma2
wwdg/prescaler
Perl代码
#!/usr/bin/perl
use warnings
###########################################
#./mergelst.pl lst
###########################################
第 2 页
my $indir = $ARGV[0]
opendir DIR, $indir or die "Connot open $indir: $!"#得到⽬录句柄
unlink "temp.lst"
open(OUTFILE, ">>temp.lst") || die ("Could not open file temp.lst ! \n")#输出⽂件句柄
foreach my $file (sort readdir DIR){ #⽬录下⽂件排序后遍历⽂件
if($file =~ /^\./){
next#'.''..'⽬录去除,不包括在遍历的范围之内
第 3 页
}
print "$indir$file\n"
open(INFILE, "$indir/$file") || die ("Could not open file $file ! \n")#打开⽬录下的⽂件 while ($line = <INFILE>){ #循环输出到输出⽂件中,合并 chomp($line)
print OUTFILE "$line \n"
}
print OUTFILE "\n\n"
close INFILE
}
第 4 页
close OUTFILE
rename 'temp.lst','merge_lst'#⽂件重名名
print "\n merge_lst\n\n"
目的:两文件第一列ID相同。不同的是第二列。现把两文件合并为一个
a.txt
b.txt
思路·把一个文件的内容存为hash。另一个文件的id去遍历,打印这个hash
--------------分割线-------------------------------------------------------
目的:求fastq文件的cg含量
fastq文件
脚本
目的:
输入文件 为test.fa如下,以第一条序列为例>ENSRNOT00000000957 gene=F1M7K0_RATCDS=1-1104 依次为基因ID、名称、编码区位置以下为碱基序列
1、将序列读入哈希变量%gene_fasta(建议 key为“基因ID” value为“碱基序列”)
2、输出第一条(ENSRNOT00000000957)序列的反向互补序列
3、输出表格依次为基因ID、名称、编码区起始位、编码区终止位,部分表格如下
4、查找其中最长的序列,输出ID编号,与碱基信息
5、统计长度在200~500之间的序列,并按长度排序输出 ID 和长度部分表格如下
例子:
································································································
目的:打印文件的前面5行
··········································································
将以下字母c a e w i m j q z s n 存入数组,排序后输出。
把fasta格式序列以tab键分割形式,也就是一列为ID,一列为序列输出
my %elmmy @files = <*.txt>
for my $f(@files){merge($f)}
save("final.log")
sub merge{
my $f = shift
my $H
open $H, $f
<$H>
while (<$H>) {
chomp
my @e = split(/[ \t]/, $_)
my $k = join(',', @e[0..2])
$elm{$k} = [] if (!exists $elm{$k})
push @{$elm{$k}}, $e[3]
}
}
sub save {
my $out = shift
my $H
open $H, '+>', $out
print $H "CHROM\tpos\tref\tfreq\n"
for my $k(keys %elm) {
print $H join("\t", split(',', $k), @{$elm{$k}}) . "\n"
}
close $H
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)