我有几个带有以下标题的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
任何帮助将不胜感激!
答案 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