gpt4 book ai didi

bash - 仅使用 bash 子字符串删除去除前导零

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

我知道解决这个问题的其他方法确实有效(我目前正在使用“expr”方法),但它让我感到困扰,因为我不知道如何使用内置的 bash 来解决这个问题-仅在函数中。

当我尝试使用 ${variable##remove} 构造从变量中删除前导零时,我只能让它删除一个零或所有数字。

string="00123456"
echo "${string##0}" // Only the first 0 is removed
echo "${string##0*0}" // The whole string is removed
echo "${string#0*0}" // Works

string="01230"
echo "${string##0}" // Works
echo "${string##0*0}" // The whole string is removed
echo "${string#0*0}" // Again, the whole string is removed

我阅读了 bash 手册两遍,看看我是否做对了,但官方文档充其量是稀疏的。我知道启用 extglob 也可以解决这个问题,但对于像这样简单的问题来说似乎有点过分了。

我是否遗漏了一些明显的东西,或者仅使用 bash 函数从字符串中删除一个或多个前导零真的那么难吗?

最佳答案

以下将从字符串中删除所有前导 0:

$ string="000123456000"
$ echo "${string#"${string%%[!0]*}"}"
123456000

"${string%%[!0]*}" 将在删除满足 [!0]* 的字符串的最长尾随部分后返回匹配> -- 本质上是在开头返回零。

"${string#"${string%%[!0]*}"}" 将从字符串的开头删除上面返回的部分。


或者,您可以使用 shell 算术:

$ string="0000123456000"
$ echo $((10#$string))
123456000

关于bash - 仅使用 bash 子字符串删除去除前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19861394/

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