Felipe
Felipe

Reputation: 21

How to remove symbols and add file name to fasta headers

I have several fasta files with the following headers:

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

I want to remove all symbols (colon, dash, and space), and add "barcodelabel=FILENAME;"

I can do it for one file using:

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

How can I do this but for all of my files at once? I tried the code below but it didn't work:

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

any help would be appreciated !

Upvotes: 1

Views: 547

Answers (2)

Felipe
Felipe

Reputation: 21

I figured it out. First, I reduced the number of sed to simplify the code. The mistake was in the final sed I had simple quotation marks and it should have been double so it can read the ${i}. final code is:

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

Upvotes: 0

RavinderSingh13
RavinderSingh13

Reputation: 133458

Considering that you want to substitute -,: or space with null and want to add string at last of the first line then following may help you on same:

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

In case you want to save output in to same Input_file then add following in above code too > temp_file && mv temp_file Input_file

Upvotes: 1

Related Questions