This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Replace fasta ID with value from TSV file (sed with special characters)

Command:

sed -i "s/^>.*$/>$fastaid/g" output.fasta

The desired output is to replace the entire fasta ID with everything stored in the variable $fastaid.

Problem is that $fastaid looks like 12456789.AB.25/12/21 and it throws errors due to the special characters of . and /

How can I amend the sed command to accommodate special characters?

If there is an awk alternative that would be good as well.

sed
awk -vX="${fastaid}"  '/^>/ {printf(">%s\n",X);next;} {print;}'
$ cat file.fa 
>seq1
atgc

$ sed -r "s_^>.*\$_>12456789.AB.25/12/21_g" file.fa
>12456789.AB.25/12/21
atgc

Two cents: Please do not use i when you are testing or not sure.

0 answers

No answers yet.

Log in to answer this question.