Bash - удаляет весь текст после символов, используя подстановочные знаки - PullRequest
1 голос
/ 05 мая 2019

Я видел этот SO-ответ , показывающий, как вы можете удалить весь текст после символа в строке в Bash. С этой информацией я могу сделать что-то вроде этого, чтобы округлить число:

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

Однако я хочу сохранить две цифры после десятичной. Как я могу получить 10.12345, чтобы быть 10.12? Мне не нужно правильно закруглить, просто обрезать. Возможно что-то с подстановочными знаками при запуске ${NUMBER%.*}?

Ответы [ 2 ]

7 голосов
/ 05 мая 2019

Вы можете округлить число с printf.Попробуйте printf "%.2f" "${NUMBER}".Вы также можете сохранить значение в переменной: printf -v myvar "%.2f" "${NUMBER}".

1 голос
/ 05 мая 2019

Использование оператора =~:

$ 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
...