gpt4 book ai didi

bash - 如何递增字符串中的最后一个数字;狂欢

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

我有一个看起来像这样的字符串/foo/bar/baz59_ 5stuff.thing

如果最后一个数字(示例中的 5)大于另一个变量,我想将其增加一个。 9 将增加到 10。请注意,最后一个数字也可以是多位数; “stuff.thing”也可以是任何东西;除了数字;所以它不能硬编码。

上面的例子会导致 /foo/bar/baz59_ 6stuff.thing

我发现了多个可以从字符串中提取最后一个数字的问题(和答案),并且显然可以将其用于比较。 我遇到的问题是如何确保在进行替换时,我只替换最后一个数字(因为显然我不能只将“5”替换为“6”)。任何人都可以提出任何建议吗?

awk/sed/bash/grep 都是可行的。

最佳答案

更新的答案

感谢@EdMorton 指出对数量超过阈值的进一步要求。可以这样做:

perl -spe 's/(\d+)(?!.*\d+)/$1>$thresh? $1+1 : $1/e' <<<  "abc123_456.txt" -- -thresh=500

原始答案

您可以在 Perl 正则表达式中使用 /e 评估/计算替换。在这里,我只是将捕获的数字串加 1,但您可以做更复杂的事情:

perl -pe 's/(\d+)(?!.*\d+)/$1+1/e' <<< "abc123_456.txt"
abc123_457.txt

(?!.*\d+) 是(希望)对任何更多数字的否定预测。

$1 表示捕获组 (\d+) 中捕获的任何数字序列。

请注意,这需要修改以处理小数、负数和科学记数法 - 但这是可能的。

关于bash - 如何递增字符串中的最后一个数字;狂欢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54367360/

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