Калькулятор командной строки, который поддерживает числа с запятыми.

Вопрос или проблема

Я часто хочу скопировать/вставить некоторые числа с веб-сайта в калькулятор, чтобы сделать быструю арифметику. Эти числа, как правило, форматированы для отображения, поэтому в них используются запятые в качестве разделителей тысяч (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.

Оцените материал
Добавить комментарий

Капча загружается...