Вопрос или проблема
Я часто хочу скопировать/вставить некоторые числа с веб-сайта в калькулятор, чтобы сделать быструю арифметику. Эти числа, как правило, форматированы для отображения, поэтому в них используются запятые в качестве разделителей тысяч (1,234,567 вместо 1234567).
Мне нужен калькулятор командной строки, который позволяет выполнять базовые арифметические операции и игнорирует запятые.
Рассматриваемые инструменты:
bc
: не поддерживает запятыеpython
: поддерживает разделители тысяч, но они должны быть в формате1_234_567
вместо1,234,567
.- Google: поддерживает запятые! Но я предпочел бы инструмент командной строки, а не поисковую систему.
Я на macOS.
Преобразование, затем передать в bc
Вы можете удалить любые запятые перед передачей ввода в bc через командную строку.
Например, используйте sed, затем |
(говорите “пайп”) к bc
Просто уберите лишние символы запятой с помощью замены regex:
$ echo '123,456.78 * 100' | sed 's/,//g' | bc
выводит
12345678
Как исполняемый скрипт:
#!/bin/bash
echo 'Введите выражение для bc (запятые-разделители тысяч будут удалены):'
read line
normalized=`echo -n "$line" | sed "s/,//g"`
echo "Следующее будет передано в bc: $normalized"
echo "$normalized" | bc
Попробуйте использовать wcalc, его можно установить с помощью:
sudo apt install wcalc
Смотрите документацию
Ответ или решение
Командный калькулятор, поддерживающий числа с запятыми
В процессе работы с числами, скопированными из интернета, многие сталкиваются с необходимостью выполнять базовые арифметические операции напрямую в командной строке. Однако частая проблема заключается в том, что числовые значения формата display содержат запятые, используемые как разделители тысяч (например, 1,234,567 вместо 1234567). В данной статье мы рассмотрим решение этой задачи, фокусируясь на нескольких доступных инструментах для macOS.
1. Использование bc
с удалением запятых
Чтобы удобно использовать калькулятор bc
, который не поддерживает форматирование с запятыми, можно предварительно удалить запятые из вводимого выражения. Это можно сделать, используя утилиту sed
, которая позволяет выполнять текстовые замены с помощью регулярных выражений.
Пример использования в терминале:
echo '123,456.78 * 100' | sed 's/,//g' | bc
В данном примере команда sed 's/,//g'
удаляет все запятые из строки перед передачей её в bc
. Результатом будет:
12345678
Скрипт для автоматизации:
Также вы можете создать простой bash-скрипт, который будет запрашивать у пользователя ввод арифметического выражения и автоматически удалять запятые:
#!/bin/bash
echo 'Введите арифметическое выражение (запятые будут удалены):'
read line
normalized=$(echo -n "$line" | sed "s/,//g")
echo "Следующее выражение будет передано в bc: $normalized"
echo "$normalized" | bc
Скопируйте этот скрипт в файл, сделайте его исполняемым с помощью chmod +x script.sh
и запустите.
2. Использование wcalc
Другим удобным инструментом для выполнения арифметических расчетов в командной строке является wcalc
, который поддерживает запятые. Инсталляция wcalc
на macOS может потребовать установки через Homebrew
. Убедитесь, что у вас установлена последняя версия Homebrew, а затем выполните следующую команду:
brew install wcalc
wcalc
позволяет использовать запятые в числах, что существенно упрощает ввод. Пример работы с wcalc
:
wcalc '123,456 + 789,012'
Выход будет следующим:
912468
Это решение чаще всего является более удобным для пользователей, которые предпочитают не изменять формат вводимых данных.
Заключение
Для выполнения арифметических операций с числами, содержащими запятые, вы можете использовать утилиты bc
и wcalc
, каждая из которых имеет свои преимущества. sed
в сочетании с bc
дает вам гибкость обработки пользовательского ввода, в то время как wcalc
предоставляет интуитивный интерфейс и поддерживает стандартный формат записи чисел.
Выбор инструмента зависит от ваших предпочтений. Оба подойдут для выполнения базовых арифметических операций в командной строке macOS.