正则表达式查找和替换:sed中的bash变量

时间:2013-10-16 19:32:11

标签: regex bash sed

我想在行的开头出现时删除此序列:

ATCGGAAGAGCACACGTCTGAACTCCAGTCACTGACCAATCTCGTATGCCGTCTTCTGCTTG后跟至少3个字符。

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

我的输入文件如下所示:

@M00946:3:000000000-A2WF2:1:1101:18115:1962 1:N:0:2
GATCGGAAGAGCACACGTCTGAACTCCAGTCACTGACCAATCTCGTATGCCGTCTTCTGCTTGAAAAAAAAAACATTTTCTTTCTTACTTCGTTCACTTTCCACTTCTTTCTCCCTATCTTCCCCCTTCTGTCTGCCCCAGCTGTCTATCCCACTTATTGTCTCCCCCCACTGCCCCACACTCCTACCTTCTTCATCTTCACCTAACACCTCCCGCTCCCTCCTTATCGTCTCTTATCCTTTCCTTGTTCC
+
????????DDDDDDDDGGGGGGHHIIIIHHHIIIIFHIIIH/CGFHHIIIIHEDHHIIIIHI=5EEGFEHHEC+5,,4@,@,,....--..+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

它不起作用。任何脚本语言的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我相信你的$1$2已经逆转了。喜欢这样:

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

在理想情况下,我想删除所有适配器序列   从行首开始,然后至少三个A.   字母,

试试这个sed:

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