忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 841 | 回复: 8

修改一个路径下多个子目录内的两个文件 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之天津
日期:2017-03-21 18:26:14
发表于 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,请问这应该怎么做,先在这谢谢各位大神了!



论坛徽章:
1
15-16赛季CBA联赛之天津
日期:2017-03-21 18:26:14
发表于 2017-03-13 14:10 |显示全部楼层
大神们给点意思啊  提供点思路我去了解了解也好啊。

论坛徽章:
0
发表于 2017-03-13 15:12 |显示全部楼层
回复 2# kevin_furant

你1楼描述的思路已经很清晰了,按这个思路写代码即可。

论坛徽章:
1
15-16赛季CBA联赛之天津
日期:2017-03-21 18:26:14
发表于 2017-03-13 15:19 |显示全部楼层
回复 3# iamlimeng
哥啊,可是我菜啊,光有思路不行的啊,我是试着写过但是不成功,有些地方我现在还整不明白。

论坛徽章:
0
发表于 2017-03-14 15:12 |显示全部楼层
竟然是illumina上机samplesheet和配置文件!

论坛徽章:
1
15-16赛季CBA联赛之天津
日期:2017-03-21 18:26:14
发表于 2017-03-15 18:34 |显示全部楼层
回复 5# 华小飞_Perl 一眼就看出来了,大神你好!

论坛徽章:
0
发表于 2017-03-15 19:44 |显示全部楼层
kevin_furant 发表于 2017-03-15 18:34
回复 5# 华小飞_Perl 一眼就看出来了,大神你好!

你好 算不上大神 只是平时经常会用而已
来自安卓客户端来自客户端

论坛徽章:
1
15-16赛季CBA联赛之天津
日期:2017-03-21 18:26:14
发表于 2017-03-16 09:25 |显示全部楼层
回复 7# 华小飞_Perl
若可以的话,能加个QQ好友吗?2359646612,我看你对illumina平台也是挺熟悉的想必你们用的也是illumina的下机数据

论坛徽章:
1
15-16赛季CBA联赛之天津
日期:2017-03-21 18:26:14
发表于 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. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP