【问题标题】:Bash - Remove all text after characters using wildcardsBash - 使用通配符删除字符后的所有文本
【发布时间】:2019-05-05 06:07:10
【问题描述】:

我看到this SO answer 展示了如何在 Bash 中删除字符串中字符之后的所有文本。有了这些信息,我可以做这样的事情来四舍五入:

NUMBER=10.12345
NUMBER=${NUMBER%.*} # 10

但是,我想保留小数点后两位数。我怎样才能让10.12345 成为10.12?我不需要适当地圆整,只需修剪。运行${NUMBER%.*} 时可能带有通配符?

【问题讨论】:

    标签: string bash trim


    【解决方案1】:

    您可以使用printf 对浮点数进行舍入。试试printf "%.2f" "${NUMBER}"。您也可以将值保存到变量中:printf -v myvar "%.2f" "${NUMBER}"。

    【讨论】:

    • 哦,这很方便。谢谢,我会在 10 分钟计时器到时将其标记为正确
    【解决方案2】:

    使用=~ 运算符:

    $ num=10.12345
    $ [[ $num =~ ^[0-9]*(.[0-9]{1,2})? ]] && echo $BASH_REMATCH
    10.12
    $ num=10
    $ [[ $num =~ ^[0-9]*(.[0-9]{1,2})? ]] && echo $BASH_REMATCH
    10
    

    【讨论】:

      猜你喜欢
      • 2011-05-09
      • 2021-12-10
      • 1970-01-01
      • 2019-01-22
      • 2018-05-31
      • 2015-02-16
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      相关资源
      最近更新 更多