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 xmlnssd="http://www.w3.org/2001/XMLSchema" xmlnssi="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
  1. #! usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Getopt::Long;
  5. use Tie::File;
  6. my ($ets, $blan, $fc, $wkdir );
  7. my %opt;
  8. GetOptions(\%opt, qw(ets=s blan=s fc=s wkdir=s));
  9. $ets=$opt{'ets'} if ($opt{'ets'});
  10. $blan=$opt{'blan'} if ($opt{'blan'});
  11. $fc=$opt{'fc'} if ($opt{'fc'});
  12. $wkdir=$opt{'wkdir'} if ($opt{'wkdir'});
  13. my $dir="/TJPROJ4/XJ/WORK/auto_demultiplexed/01.HiseqX";
  14. my $rdir="$dir/$wkdir/$fc";
  15. #print $rdir;
  16. if (defined $ets){
  17. my @Aets= split(//, $ets);
  18. foreach my $d(@Aets){
  19.         my $tdir="$rdir.$d";
  20.         chdir "$tdir";
  21. #print `pwd`;
  22.         my @Sam=glob "S*";
  23.         my @Rnam=glob "R*";
  24. my $Sfile=shift(@Sam);
  25. my $Rfile=shift(@Rnam);
  26.         my @array;
  27.         tie (@array, 'Tie::File', $Sfile) or die;
  28.         for(@array){
  29.                 s/,([ATCG]{6})../,$1/g;
  30.         }
  31. untie @array;
  32.     tie (@array, 'Tie::File', $Rfile) or die;
  33.     for(@array){
  34.         s/"159"/"157"/g;
  35.     }
  36. untie @array;
  37.         }
  38. }
  39. if (defined $blan){
  40. my @Ablan = split(//, $blan);
  41. foreach my $f(@Ablan){
  42.         my $tdir="$rdir.$f";
  43.         chdir "$tdir";
  44.         my @Sam=glob "S*";
  45. my $Sfile=shift(@Sam);
  46.         my @array;
  47.         tie (@array, 'Tie::File', $Sfile) or die;
  48.         for(@array){
  49.                 s/[ATGC]{6,8}//g;
  50.         }
  51. untie @array;

  52. }
  53. }
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2