Деление с плавающей точкой с помощью bc в одной команде - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь преобразовать байты в ТБ из определенного совпадения в команде / файле.

Полученная мной команда:

var=$(($(cat test.txt | awk '/miscellaneous/ {print $NF}' | sed s/.$//)/1000**4)) ; printf $var

Предполагается, что значение равно 6.182 но печатает только 6.Я просто не могу понять, как использовать bc в этой команде для получения плавающих значений.

test.txt выглядит примерно так:

  "a": 90919780478976,
  "b": 150812851408896,
  "c": 86337338950671,
  "miscellaneous": 6182842641393,
  "d": 0,
  "e": 58292669816832

1 Ответ

0 голосов
/ 07 января 2019

bc - неправильный инструмент - попробуйте awk:

awk '/miscellaneous/ { print $2 / 1.0e12; }' < test.txt

6.18284

В вашем исходном примере выполняется деление на bash, которое понимает только целочисленную арифметику.

...