linux字符串替换问题,有点难度

发布于 2021-11-26 14:22:16 字数 432 浏览 853 评论 8

我有一个字符串类似:

(1,1,{1,1},{1,1,{2,2},cco1{2,2},cbax[{2,2},{2,2}]},{ccp1[{2,2},{2,2}]})

这里面有大括号嵌套大括号, 我想做到的是将第二层大括号内的逗号,全部替换成 | 符号.

替换后效果如下:

(1,1,{1,1},{1,1,{2|2},cco1{2|2}|cbax[{2|2}|{2|2}]},{ccp1[{2|2}|{2|2}]})

这个shell应当如何写呢,我研究了好久, 求大神现身

说明一下,本例子中的1,2 数字只是为了方便查看我举的特例,实际可情况是可以为其它任何字母或数字




如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

归途 2021-12-01 05:45:48

兄台没太看明白, 能说说思路吗

情痴 2021-12-01 05:43:52

回复
维护一个计数器始终令'{'的数量与层数一致;若有两个,碰见','就替换

清风夜微凉 2021-12-01 05:29:03
i = 0
M = 0
len = length string

for (;;)
    if i >= len 
        break

    c = string[i++]

    if c == ,
        if M == 2
            c = | 
    if c == {
        M++
    if c == }
        if M > 0
            M--

彼岸花ソ最美的依靠 2021-12-01 05:25:43

能说说思路吗

奈何桥上唱咆哮 2021-12-01 04:24:06

不知道 shell 里用栈的结构复杂不复杂,这个问题用栈很好解决。

臻嫒无言 2021-12-01 03:48:40

ding ding

韬韬不绝 2021-11-30 12:15:38

2这个值只是我举的例子,为了方便查看, 实际情况是不同的值

疾风者 2021-11-30 07:34:23

sed 's/{2,2}/{2|2}/g'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文