neversaint
neversaint

Reputation: 64004

Appending Text To the Existing First Line with Sed

I have a data that looks like this (FASTA format). Note that in comes with block of 2 ">" header and the sequence.

>SRR018006
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

What I want to do is to append a text (e.g. "foo" in the > header) yielding:

>SRR018006-foo
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006-foo
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

Is there a way to do that using SED? Preferably inline modifying the original file.

Upvotes: 3

Views: 1682

Answers (2)

ghostdog74
ghostdog74

Reputation: 342363

since judging from your previous post, you are also experienced using awk: here's an awk solution.

# awk '/^>/{print $0"-foo";next}1' file
>SRR018006-foo
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006-foo
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

# awk '/^>/{print $0"-foo";next}1' file > temp
# mv temp file

if you insist on sed

# sed -e '/^>/s/$/-foo/' file

Upvotes: 3

EmFi
EmFi

Reputation: 23450

This will do what you're looking for.

sed -ie 's/^\(>.*\)/\1-foo/' file

Upvotes: 7

Related Questions