使用Sed将文本附加到现有的第一行

时间:2009-10-13 06:18:04

标签: linux bash unix sed awk

我的数据看起来像这样(FASTA格式)。注意 带有2“>块”标题和序列。

>SRR018006
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

我想要做的是附加一个文字(例如>标题中的“foo”) 得到以下特性:

>SRR018006-foo
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006-foo
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

有没有办法用SED做到这一点?优选地在线修改 原始文件。

2 个答案:

答案 0 :(得分:7)

这将做你想要的。

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

答案 1 :(得分:3)

从您之前的帖子判断,您也有使用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

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