2009-10-13 7 views
3

J'ai une donnée qui ressemble à ceci (format FASTA). Notez que vient avec le bloc de 2 ">" en-tête et la séquence.Ajout de texte à la première ligne existante avec Sed

>SRR018006 
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN 
>SRR018006 
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 

Ce que je veux faire est d'ajouter un texte (par exemple « foo » dans le> en-tête) cédait:

>SRR018006-foo 
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN 
>SRR018006-foo 
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 

Est-il possible de le faire en utilisant ETD? De préférence en ligne modifiant le fichier original.

Répondre

7

Cela fera ce que vous cherchez.

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

depuis votre dernier post, vous êtes également expérimenté avec awk: voici une solution 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 

si vous insistez sur sed

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

Malgré le ton négatif, je dirais que votre suggestion avec sed est beaucoup plus propre que les deux autres en utilisant awk, et probablement beaucoup plus efficace. – Idelic