gpt4 book ai didi

regex - 增加字符串中所有遵循某种模式的术语的数量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:06 25 4
gpt4 key购买 nike

我有类似 printf 字符串的东西,例如%1 狐狸跳过了 %2 桥。我想将其转换为 The {0} fox jumped over the {1} bridge。即:获取字符串,搜索%(\d+) pattern,转为{$1 - 1},重复直到字符串结束。

在 Linux 中是否有一种简单的方法(例如 awk 单行代码)?我读到 sed 不应该是这里的一个选项。

重要提示:啊,不幸的是,我不能使用 perl 解决方案!

注意:虽然我认为我不会在我的字符串中找到像 %%%%1 这样棘手的东西,但我正在尝试实现一个解决方案来处理这些问题.我使用的测试字符串是 %1 aaa %%2 bbb%%% ccc%3.,45--- ddd%6%7。对于这个测试字符串,我希望输出 {0} aaa %{1} bbb%%% ccc{2}.,45--- ddd{5}{6}

最佳答案

另一种方式

awk '{while(sub(/%[0-9]+/,"{"x++"}"));}!(x=0)' file

只是在每次匹配 %[number] 和替换的行中循环递增 x。在行尾将 x 设置回 0


对于新的测试字符串你可以使用

awk '{while(match($0,/%([0-9]+)/,a))sub(a[0],"{"a[1]-1"}")}1' file

尽管这需要 GNU awk 才能匹配第三个参数。

例子

%1 aaa %%2 bbb%%% ccc%3.,45--- ddd%6%7

成为

{0} aaa %{1} bbb%%% ccc{2}.,45--- ddd{5}{6}

关于regex - 增加字符串中所有遵循某种模式的术语的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33302662/

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