Chinaunix
标题:
修改一个路径下多个子目录内的两个文件
[打印本页]
作者:
kevin_furant
时间:
2017-03-13 10:59
标题:
修改一个路径下多个子目录内的两个文件
假如这个路径为:/TJPROJ1/XJ/WORK/auto_demultiplexed/01.HiseqX/161230_ST-E00251A
此目录下有8个子目录分别为:
161230_ST-E00251_0273_AHF3GHALXX.0
161230_ST-E00251_0273_AHF3GHALXX.1
161230_ST-E00251_0273_AHF3GHALXX.2
161230_ST-E00251_0273_AHF3GHALXX.3
161230_ST-E00251_0273_AHF3GHALXX.4
161230_ST-E00251_0273_AHF3GHALXX.5
161230_ST-E00251_0273_AHF3GHALXX.6
161230_ST-E00251_0273_AHF3GHALXX.7
这8个目录下每个目录下都有RunInfo.xml和SampleSheet.csv这两个文件,在shell下我是用 sed -i s/"159"/"157"/g RunInfo.xml 去修改 RUNinfo.xml;用 sed -ri '\''s/,([ATCG]{6})../,\1/g'\'' SampleSheet.csv去修改 SampleSheet.csv
RUNinfo.xml内容如下:
<?xml version="1.0"?>
<RunInfo xmlns
sd="http://www.w3.org/2001/XMLSchema" xmlns
si="http://www.w3.org/2001/XMLSchema-instance" Version="3">
<Run Id="161230_ST-E00251_0273_AHF3GHALXX" Number="273">
<Flowcell>HF3GHALXX</Flowcell>
<Instrument>ST-E00251</Instrument>
<Date>161230</Date>
<Reads>
<Read FirstCycle="1" LastCycle="150" IsIndexedRead="N" />
<Read FirstCycle="152" LastCycle="
159
" IsIndexedRead="Y" />
<Read FirstCycle="160" LastCycle="309" IsIndexedRead="N" />
SampleSheet.csv的内容如下:
[Header],,,,
Investigator Name,Jason,,,
Project Name,Novogene,,,
Experiment Name,X_test,,,
Date,161230,,,
Workflow,GenerateFASTQ,,,
[Data],,,,
SampleID,SampleName,index,index2
DHG10670,DHG10670,
TCCGTCTA
,,
DHG10757,DHG10757,
AGAGTCAA
,,
DHG10760,DHG10760,
AGTCACTA
,,
DHG10672,DHG10672,
TGAAGAGA
,,
DHG10673,DHG10673,
TGGAACAA
,,
DHG10674,DHG10674,
TGGCTTCA
,,
DHG10675,DHG10675,
TGGTGGTA
,,
DHG10676,DHG10676,
TTCACGCA
,,
DHG10677,DHG10677,
AACTCACC
,,
DHG10748,DHG10748,
AGTACAAG
,,
DHG10756,DHG10756,
ACTATGCA
,,
如果SampleSheet.csv中标颜色的地方为一行,就把后面标红色字的地方给删了,如果不是我就挑几个目录进去把这两个文件用上面的正则修改了,如果我挑中161230_ST-E00251_0273_AHF3GHALXX.0和161230_ST-E00251_0273_AHF3GHALXX.1那么就只进入这两个目录下修改 RunInfo.xml和SampleSheet.csv,请问这应该怎么做,先在这谢谢各位大神了!
作者:
kevin_furant
时间:
2017-03-13 14:10
大神们给点意思啊 提供点思路我去了解了解也好啊。
作者:
iamlimeng
时间:
2017-03-13 15:12
回复
2#
kevin_furant
你1楼描述的思路已经很清晰了,按这个思路写代码即可。
作者:
kevin_furant
时间:
2017-03-13 15:19
回复
3#
iamlimeng
哥啊,可是我菜啊,光有思路不行的啊,我是试着写过但是不成功,有些地方我现在还整不明白。
作者:
华小飞_Perl
时间:
2017-03-14 15:12
竟然是illumina上机samplesheet和配置文件!
作者:
kevin_furant
时间:
2017-03-15 18:34
回复
5#
华小飞_Perl
一眼就看出来了,大神你好!
作者:
华小飞_Perl
时间:
2017-03-15 19:44
kevin_furant 发表于 2017-03-15 18:34
回复 5# 华小飞_Perl 一眼就看出来了,大神你好!
你好 算不上大神 只是平时经常会用而已
作者:
kevin_furant
时间:
2017-03-16 09:25
回复
7#
华小飞_Perl
若可以的话,能加个QQ好友吗?2359646612,我看你对illumina平台也是挺熟悉的想必你们用的也是illumina的下机数据
作者:
kevin_furant
时间:
2017-04-27 14:23
#! usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use Tie::File;
my ($ets, $blan, $fc, $wkdir );
my %opt;
GetOptions(\%opt, qw(ets=s blan=s fc=s wkdir=s));
$ets=$opt{'ets'} if ($opt{'ets'});
$blan=$opt{'blan'} if ($opt{'blan'});
$fc=$opt{'fc'} if ($opt{'fc'});
$wkdir=$opt{'wkdir'} if ($opt{'wkdir'});
my $dir="/TJPROJ4/XJ/WORK/auto_demultiplexed/01.HiseqX";
my $rdir="$dir/$wkdir/$fc";
#print $rdir;
if (defined $ets){
my @Aets= split(//, $ets);
foreach my $d(@Aets){
my $tdir="$rdir.$d";
chdir "$tdir";
#print `pwd`;
my @Sam=glob "S*";
my @Rnam=glob "R*";
my $Sfile=shift(@Sam);
my $Rfile=shift(@Rnam);
my @array;
tie (@array, 'Tie::File', $Sfile) or die;
for(@array){
s/,([ATCG]{6})../,$1/g;
}
untie @array;
tie (@array, 'Tie::File', $Rfile) or die;
for(@array){
s/"159"/"157"/g;
}
untie @array;
}
}
if (defined $blan){
my @Ablan = split(//, $blan);
foreach my $f(@Ablan){
my $tdir="$rdir.$f";
chdir "$tdir";
my @Sam=glob "S*";
my $Sfile=shift(@Sam);
my @array;
tie (@array, 'Tie::File', $Sfile) or die;
for(@array){
s/[ATGC]{6,8}//g;
}
untie @array;
}
}
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2