从行尾复制并粘贴文本

从行尾复制并粘贴文本

很长很短,但有没有办法复制选择行的末尾并将文本附加到该行。我想要实现的就是这个。

我拥有的

>13_gnd
atcg
>14_galF
atgc

我想要的是

>13_gnd_gnd
atcg
>14_galF_galF
atgc    

因此,以复制最后一个单词开头的所有行>并将其附加到行尾。谢谢。

答案1

$ sed 's/_[^_]*$/&&/' file         
>13_gnd_gnd
atcg
>14_galF_galF
atgc

替换sed将匹配每行的最后一个下划线及其后面的内容,直至行尾。这就是模式_[^_]*$的作用(“匹配可能后跟其他非下划线字符的下划线和行尾”)。它会代替这(包括下划线)与匹配的任何内容两次(这就是&&替换位中的内容)。

由于这似乎是一个文件法斯塔格式,并且由于基因组序列不能包含下划线,因此不需要>在该行的开头进行特殊测试。

答案2

短的awk解决方案:

awk -F'_' '$0~/^>/{ $0=$0 FS $NF }1' file

输出:

>13_gnd_gnd
atcg
>14_galF_galF
atgc

细节:

  • -F'_'- 字段分隔符

  • $0~/^>/- 如果该行以以下内容开头,则执行操作>

  • $0=$0 FS $NF- 将最后一个字段值附加到末尾

相关内容