如何删除符号并将文件名添加到fasta标题

时间:2018-02-21 00:34:20

标签: bash sed header cat fasta

我有几个带有以下标题的fasta文件:

M01498:408:000000000-BLBYD:1:1101:11790:1823 1:N:0:1

我想删除所有符号(冒号,短划线和空格),并添加“barcodelabel = FILENAME;”

我可以使用以下方法为一个文件执行:

cat A1.fasta |sed s/-//g | sed s/://g| sed s/\ //g|sed 's/^>/>barcodelabel=A1;/g' >A1.renamed.fasta

我怎样才能同时为我的所有文件执行此操作?我尝试了下面的代码,但它不起作用:

for i in {A..H}{1..6}; do cat ${i}.fasta |sed s/-//g | sed s/://g| sed s/\ //g | sed 's/^>/>barcodelabel=${i};/g' >${i}.named.fasta; done

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

考虑到您要将-:或空格替换为null并希望在第一行的最后添加字符串,那么以下内容可能会对您有所帮助:

awk 'FNR==1{gsub(/:|-| +/,"");print $0,"barcodelabel=FILENAME";next} 1'  Input_file

如果您想将输出保存到同一个Input_file中,请在上面的代码中添加以下内容> temp_file && mv temp_file Input_file

答案 1 :(得分:0)

我明白了。首先,我减少了sed的数量以简化代码。错误是在最后的sed我有简单的引号,它应该是双倍,所以它可以读取$ {i}。最终代码是:

for i in {A..H}{1..6}; do cat ${i}.fasta | 
sed 's/[-: ]//g' | 
sed "s/^>/>barcodelabel=${i};/g" > ${i}.final4.fasta; done