gpt4 book ai didi

bash - 如何从 bash 中的字符串中删除非贪婪后缀?

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

我想从最后一个 .svc. 开始的字符串中删除任何后缀。例如:

abc.svc.cluster.local => abc

abc.svc.svc.cluster.local => abc.svc

abc.txt => abc.txt

abc.svc.xyz.svc.zzz => abc.svc.xyz

svc.xxx => svc.xxx(svc 前缺少 .)

如果我这样做是 Go,我会找到子字符串 .svc. 的最后一个索引,然后从该索引中删除。

我如何在 bash 中执行此操作?谢谢。

最佳答案

像这样:

[STEP 101] $ v=abc.svc.svc.cluster.local
[STEP 102] $ echo ${v%.svc*}
abc.svc
[STEP 103] $ v=abc.svc.cluster.local
[STEP 104] $ echo ${v%.svc*}
abc
[STEP 105] $

并且,使用 %% 作为贪婪行为:

[STEP 105] $ v=abc.svc.svc.cluster.local
[STEP 106] $ echo ${v%%.svc*}
abc
[STEP 107] $

根据man bash:

  • ${parameter%word}
    ${parameter%%word}

    The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches a trailing portion of the expanded value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the % case) or the longest matching pattern (the %% case) deleted. [...]

关于bash - 如何从 bash 中的字符串中删除非贪婪后缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65791753/

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