仅使用bash子字符串删除去除前导零
发布时间:2020-12-15 22:29:06 所属栏目:安全 来源:网络整理
导读:我知道其他解决这个问题的方法(我目前正在使用’expr’方法),但是我不知道如何只使用bash内置函数来解决这个问题. 当我尝试使用${variable ## remove}构造从变量中去除前导零时,我可以只获取它来删除一个零或全部数字. string="00123456"echo "${string##0}"
我知道其他解决这个问题的方法(我目前正在使用’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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |