gpt4 book ai didi

bash - 如何使用 sed 有选择地替换一组三个字符

转载 作者:行者123 更新时间:2023-11-29 09:29:34 25 4
gpt4 key购买 nike

我需要替换文本中的三个特定字符(三元组)。我想匹配从位置 1、4、7、10、13 等开始但不在位置 2、3、5、6 等开始的模式。

例如,我想在文本 ctaagctaaggcgtaaga 中用 NNN 查找/替换 taa,我想得到 ctaagcNNNggcgtaaga.

'taa' 的第一次出现从位置 2 开始,不应被匹配/替换,第二次出现从位置 7 开始并被替换,第三次出现从位置 14 开始并且不匹配。


到目前为止,我的解决方案是用“+”分隔三元组,进行替换并删除所有“+”。但是,我正在考虑使用单个 sed 命令的更优雅的解决方案。

echo $dna | sed 's/.../&+/g;s/+$//' | sed 's/taa/NNN/g' | sed 's/+//g'

最佳答案

据我所知,您将需要多个 sed 命令来完成此操作。但是,您可以在 sed 的一次调用中执行所有命令,例如:

<<<ctaagctaaggcgtaaga bsdsed 's/.../&+/g; s/taa/NNN/g; s/+//g'

输出:

ctaagcNNNggcgtaaga

关于bash - 如何使用 sed 有选择地替换一组三个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42540361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com