2013-10-16 27 views
1

我想删除该序列存在时在该行的开头:正则表达式查找和替换:bash的变量内的sed

ATCGGAAGAGCACACGTCTGAACTCCAGTCACTGACCAATCTCGTATGCCGTCTTCTGCTTG跟随有至少3个所述的字符。

应删除序列和多个A,并保留文件的其余部分。

我输入文件看起来像这样:

@M00946:3:000000000-A2WF2:1:1101:18115:1962 1:N:0:2 
GATCGGAAGAGCACACGTCTGAACTCCAGTCACTGACCAATCTCGTATGCCGTCTTCTGCTTGAAAAAAAAAACATTTTCTTTCTTACTTCGTTCACTTTCCACTTCTTTCTCCCTATCTTCCCCCTTCTGTCTGCCCCAGCTGTCTATCCCACTTATTGTCTCCCCCCACTGCCCCACACTCCTACCTTCTTCATCTTCACCTAACACCTCCCGCTCCCTCCTTATCGTCTCTTATCCTTTCCTTGTTCC 
+ 
????????DDDDDDDDGGGGGGHHIIIIHHHIIIIFHIIIH/CGFHHIIIIHEDHHIIIIHI=5EEGFEHHEC+5,,[email protected],@,,....--..+77,,.6..6.....7.4..7.76=..-5.>.4-)134-.5....-3*))0***1*********10*0**01*1*)''..0***.)0'))*****00*11******01***0****0*)**0)'''...*0)0*11********1****1*0******** 
@M00946:3:000000000-A2WF2:1:1101:19888:2900 1:N:0:2 
GATCGGAAGAGCACACGTCTGAACTCCAGTCACTGACCAATCTCGTATGCCGTCTTCTGCTTGAAAAAAAAAAAACACAAATACCGTTCCAATATCTTTTTGTTTCATGTCTAATAAC 
+ 
<<??????BB?BBBBBCAFFFCFHF;>EFCDFGFFHFBGHCA=FHA>EFGEE7CF>F?FFHB=?EEGF>>DH5<)++,++,4,,4+=:,,,,5,,,,,,,,),33?,3,3,3,,,,33 

我试图用脚本replace.sh它看起来像这样

file=$1; 
adapter_sequence=$2; 
sed -r "s/${adapter_sequence}A{3}//" $file 

命令行:

./replace .sh file.fastq GATCGGAAGAGCACACGTCTGAACTCCAGTCACTGACCAATCTCGTATGCCGTCTTCTGCTTG

它二d不工作。任何脚本语言的帮助将不胜感激。

回答

2

我相信你有$1,$2倒过来。有这样的:

adapter_sequence=$2 
sed "s/$adapter_sequence//" $1 

在理想情况下,我想删除所有接头序列 开始在一行的开头,然后至少三个A 字母,

试试这个sed:

sed -r "s/^${adapter_sequence}A{3,}//" file 
+0

我编辑了这个问题,使它更具可读性,对于混淆感到抱歉, – Perlnika

+0

我编辑了答案你的编辑。 – anubhava