regex 用新行替换特殊字符

nvbavucw  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(129)

我在文本文件中有以下行。我想删除最后一个“_”并在其后添加一个新行字符。

>15_48499991_ENSG00000074803_C_G_G_CCAATCGCTTTCAAGTTAGTGTG
>15_48499991_ENSG00000074803_C_G_G_CAATCGCTTTCAAGTTAGTGTGA
>15_48499991_ENSG00000074803_C_G_G_AATCGCTTTCAAGTTAGTGTGAT

Desired output:

>15_48499991_ENSG00000074803_C_G_G
CCAATCGCTTTCAAGTTAGTGTG
>15_48499991_ENSG00000074803_C_G_G
CAATCGCTTTCAAGTTAGTGTGA
>15_48499991_ENSG00000074803_C_G_G
AATCGCTTTCAAGTTAGTGTGAT

我已经使用下面的SED查询来执行此操作。我无法找出查询中的问题。

sed 's/\_/'\n'/g'
x759pob2

x759pob21#

在匹配_之前,可以让.*吃掉尽可能多的行(因为*是贪婪的),

sed 's/\(.*\)_/\1\n/' file

或者是更好的

sed -E 's/(.*)_/\1\n/' file

关于您的尝试,它有3个错误:

  • _不需要转义
  • '不能嵌套(这是因为shell,而不是sed);我不明白你为什么把它们放在那里:你想干什么?
  • 如果修复上面的两个问题,以sed 's/_/\n/g'结束,则将替换所有的_,而不仅仅是最后一个。

相关问题