Bash-使用通配符删除字符后的所有文本

时间:2019-05-04 21:36:00

标签: string bash trim

我看到this SO answer显示了如何删除Bash中字符串中某个字符之后的所有文本。有了这些信息,我可以执行以下操作来舍入一个数字:

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

但是,我想保留小数点后两位。如何使10.12345成为10.12?我不需要适当舍入,只需修剪即可。在运行${NUMBER%.*}时也许带有通配符?

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

使用=~运算符:

$ 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