Есть ли простой способ удалить ведущие нули из отрицательного числа в оболочке? Например: для ряда как -02, то выход будет -2Как удалить ведущие нули из отрицательных чисел в оболочке
0
A
ответ
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"
0
Одно решение, как я знаю следующее:
echo -02 | awk '{$0=int($0)}1'
, но он работает только с целым числом. Для плавания есть какой-то способ?
+0
Не бросать его в int? – 123
1
Как насчет использования встроенного printf
?
$ num=-02
$ printf "%d\n" "$num"
-2
Мне понравился вариант с bc. Он также работает с плавающим, позитивным и отрицательным числом. Но в случае, когда a = "+ 00", это не работает. Любой выход? –
@GoutamDas В этом случае я думаю, вам нужно будет удалить '+', что-то вроде этого: 'bc <<<" $ {a # +} + 0 "' – andlrc