perl合并文件成空文件夹

perl合并文件成空文件夹,第1张

使⽤Perl合并⽂件使⽤Perl合并⽂件

有时需要将整个⽬录下的⼩⽂件合并到⼀个⽂件中,以便查阅检索

特性

整个⽬录完全遍历,⾃动存⼊单个⽂件

顺序遍历⽂件

待合并的⽬录

合并后的⽂件内容

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 %elm

my @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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11792128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存