【问题标题】:how to remove leading zeros from negative numbers in shell如何从shell中的负数中删除前导零
【发布时间】:2016-06-07 21:11:45
【问题描述】:

有什么简单的方法可以从 shell 中的负数中删除前导零? 例如:对于像 -02 这样的数字,输出将是 -2

【问题讨论】:

    标签: bash sh


    【解决方案1】:

    有多种方法可以做到这一点:

    a="-02"
    echo "$((a+0))"
    

    另一个正则表达式:

    a="-02" 
    echo "${a//-0/-}"
    

    或者

    a="-02" 
    [[ "$a" =~ ^(-*|\+*)0*(.*)$ ]]
    echo "${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
    

    还有bc:

    a="-02"
    bc <<< "$a + 0"
    

    【讨论】:

    • 我喜欢 bc 的选项。它也适用于浮点数、正数和负数。但是在 a="+00" 的情况下它不起作用。有什么办法吗?
    • @GoutamDas 在这种情况下,我认为您需要删除+,如下所示:bc &lt;&lt;&lt; "${a#+} + 0"
    【解决方案2】:

    使用内置的printf怎么样?

    $ num=-02
    $ printf "%d\n" "$num"
    -2
    

    【讨论】:

      【解决方案3】:

      据我所知,一个解决方案如下:

      echo -02 | awk '{$0=int($0)}1'
      

      但它只适用于整数。对于浮动有什么办法吗?

      【讨论】:

      • 不要将其转换为 int 吗?
      猜你喜欢
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 2018-06-16
      • 2019-05-02
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      相关资源
      最近更新 更多