Добавление текста к существующей первой строке с помощью Sed

У меня есть данные, которые выглядят так (формат FASTA). Обратите внимание, что в блок входит заголовок 2 ">" и последовательность.

>SRR018006
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

Что я хочу сделать, это добавить текст (например, «foo» в> заголовке), получая:

>SRR018006-foo
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006-foo
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

Есть ли способ сделать это с помощью SED? Желательно встроенное изменение исходного файла.

13.10.2009 06:18:03
2 ОТВЕТА
РЕШЕНИЕ

Это сделает то, что вы ищете.

sed -ie 's/^\(>.*\)/\1-foo/' file
7
13.10.2009 06:25:29

Судя по предыдущему посту, вы также имеете опыт использования awk: вот решение awk.

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

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

если вы настаиваете на седе

# sed -e '/^>/s/$/-foo/' file
3
13.10.2009 12:44:49
Несмотря на ваш отрицательный тон, я бы сказал, что ваше предложение с sed намного чище, чем два других, использующих awk, и, вероятно, намного более эффективно.
Idelic 14.10.2009 07:26:34