2013-10-16 29 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