regex - 用新行替换特殊字符
问题描述
我在文本文件中有以下几行。我想删除最后一个 '_' 并在之后添加一个新行字符。
>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'
解决方案
在匹配之前,您可以.*
尽可能多地吃线(因为很贪心) :*
_
sed 's/\(.*\)_/\1\n/' file
或者有争议的更好
sed -E 's/(.*)_/\1\n/' file
关于您的尝试,它有 3 个错误:
_
不需要逃避'
不能嵌套(这是因为 shell,而不是sed
);fwiw,我不明白你为什么把它们放在那里:你想做什么?- 如果您修复以上两个,以 结尾
sed 's/_/\n/g'
,您将替换所有_
s,而不仅仅是最后一个。
推荐阅读
- java - 具有不同可伸缩性级别的故障转移的 Java 程序
- snowflake-cloud-data-platform - 在 JDBC 驱动程序上并行执行 MERGE 命令不起作用
- python - python中最简单的Kafka Avro消费者
- java - 如何在 Java 中使用字符数组创建字符串?
- castle-dynamicproxy - Castle 动态代理 MixinInstance 行为
- excel - 如何在 Excel 中计算过滤表,可能使用 VBA
- swift - 错误消息:无法推断通用参数“FalseContent”
- asp.net - RDLC - 从报告中调用子报告的次数不定
- python - Python 新手——学习 if 语句
- mysql - 本地数据库失败并切换到云数据库?