我有原始序列,我必须将其转换为 fasta 格式。所以读取如下:
CTACGGTGTGCTCTTCCGATCTGACTATG
AGTTGGTGTGCTCTCCCGATCTCGCTCCCTC
GTGAGGTGTGCTCTTCCGATCTCCGGCAGTGTGCT
我想在每行上方添加 > 和数字,所以最后它看起来应该是这样的:
>1
CTACGGTGTGCTCTTCCGATCTGACTATG
>2
AGTTGGTGTGCTCTCCCGATCTCGCTCCCTC
>3
GTGAGGTGTGCTCTTCCGATCTCCGGCAGTGTGCT
我该如何在 vim 中操作?如果没有 vim,我可以使用 sed 命令吗?
答案1
在 vim 中,我会添加第一行 ( >1
),然后创建一个简单的宏,该宏会提取编号行,向下移动一行,粘贴提取的内容并增加数字。在 vim 正常模式命令中:yyjpCtrl-a。如果您将宏保存到注册q
,请使用 执行它@q。
假设第一条记录在第一行,您可以通过两次调用 GNU sed 来完成此操作,如下所示:
sed '=' file | sed 's/^[0-9]/>&/'
或者nl
仅使用包含数据的数字行:
nl file | sed 's/^ *\([0-9]\+\)\t*/>\1\n/'
可以更直观地完成awk
:
awk 'NF { print ">" ++i "\n" $0 }' file
所有情况下的输出:
>1
CTACGGTGTGCTCTTCCGATCTGACTATG
>2
AGTTGGTGTGCTCTCCCGATCTCGCTCCCTC
>3
GTGAGGTGTGCTCTTCCGATCTCCGGCAGTGTGCT
答案2
要插入将在下一个命令中使用的行号和标记,可以使用以下命令:
:%s/^/\=printf('>%-d ', line('.'))
要插入换行符,请将一些提示替换为“\r”。在这种情况下,像这样的简单操作应该可以完成此任务
:'<,'>s/ /\r
还有更多 vim 技巧http://vim.wikia.com/wiki/Vim_Tips_Wiki