Преобразовать значения из дальтона в килодальтон (делить значения на 1000)

Мой редактор blufish был исправлен после выполнения ниже:

sudo nano /etc/apt/sources.list 
add below lines: 
deb http://ppa.launchpad.net/klaus-vormweg/bluefish/ubuntu trusty main 
deb-src http://ppa.launchpad.net/klaus-vormweg/bluefish/ubuntu trusty main 

ПРИМЕЧАНИЕ. Верно в приведенных выше строках для версии Ubuntu 14.04, ваш может быть другим

sudo apt-get install python-software-properties 
sudo apt-get install software-properties-common 

ПРИМЕЧАНИЕ. : 8938CE95D36FE61D в приведенной ниже строке - это то, что я получил в своей ошибке

gpg --keyserver keyserver.ubuntu.com --recv 8938CE95D36FE61D 
gpg --export --armor 8938CE95D36FE61D  | sudo apt-key add - 
sudo apt-get update 
sudo apt-get upgrade 
sudo apt-get dist-upgrade
5
задан 26 September 2017 в 11:29

10 ответов

Я бы просто использовал perl:

$ perl -lne 'print $_/1000' file
12.34509
236.575665
18.86541
45.67887

Или awk:

$ awk '{printf "%.6f\n", $1/1000}' file
12.345090
236.575665
18.865410
45.678870
12
ответ дан 22 May 2018 в 18:08
  • 1
    Способ perl особенно хорош, потому что он не требует ничего особенного, чтобы сохранить все цифры, показанные OP в их примере вывода. – Eliah Kagan 25 September 2017 в 13:26

Общее описание

Предположим, что числовое значение сохраняется в переменной dalton. Затем он работает со значениями, которые достаточно велики для создания ненулевых значений с помощью простой конструкции $(()).

Пример:

$ dalton=3800
$ echo $(($dalton/1000))
3

Чтобы получить правильное округление до ближайшего целого числа

$ echo $(( ($dalton+500)/1000 ))
4

У вас есть больше возможностей, если вы устанавливаете bc.

sudo apt-get install bc

$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
scale=3                        # set the number of decimals
dalton=3800
dalton/1000
3.800
(dalton+0,5)/1000
(standard_in) 4: syntax error  # use decimal point (not comma)
(dalton+0.5)/1000              # add 0.5 to get correct rounding
3.800
dalton=3800.8
(dalton+0.5)/1000
3.801
dalton=3800.2
(dalton+0.5)/1000
3.800
quit
$ 

В shellscript вы можете вставлять вход в bc так,

echo "scale=3
($dalton+0.5)/1000" | bc

, который также может быть протестирован в интерактивном режиме,

$ dalton=3800.8
$ echo "scale=3
($dalton+0.5)/1000" | bc
3.801
$

Shellscript

Создайте shellscript с именем converter

#!/bin/bash

dalton=

function convert2kilo {

 echo "scale=6
 ($dalton+0.0005)/1000" | bc 
}
########################################################################

# main

########################################################################

while read dalton
do
 convert2kilo
done

и входной файл с именем input.data

12345.09
236575.665
18865.41
45678.87
1.0008
1.0002

Сделать исполняемый файл shellscript

chmod ugo+x converter

Запустить shellscript

$ < input.data ./converter 
12.345090
236.575665
18.865410
45.678870
.001001
.001000
$ 
6
ответ дан 22 May 2018 в 18:08

Этот маленький скрипт был бы полезен:

#!/bin/bash    

values="$1"

echo "Source of values: $values"

while read -e name; do            

        results=$(bc <<< "scale=4; ($name/1000)")
        echo "$results"

done < "$values"

Использование:

Сделать исполняемый файл с помощью:
chmod u+x dalton.sh
Запустить и передать путь к файлу данных или имени файла :
./dalton.sh data.txt
3
ответ дан 22 May 2018 в 18:08

Предположим, что у вас есть текстовый файл с именем daltons, например, со всеми численными значениями, которые вы хотите преобразовать, в одном столбце.

awk '{kDa=$1/1000; print kDa}' daltons >> result

Где kDa является переменной для сохранения операции, а $1 будет принимать каждое из значений строк. Наконец, результаты сохраняются в файле result.

1
ответ дан 22 May 2018 в 18:08
  • 1
    Хотя это не имеет выходной точности, исходный плакат показывал в своем примере вывода (например, он дает 12.3451 вместо 12.34509), это, как правило, хороший подход. Назначение переменной (kDa) перед печатью, возможно, делает команду более самостоятельной документацией, но не нужна, поскольку аргумент print может быть арифметическим выражением. То есть awk '{print $1/1000}' daltons >> result имеет тот же эффект. – Eliah Kagan 25 September 2017 в 16:11

Предположим, что у вас есть текстовый файл с именем daltons, например, со всеми численными значениями, которые вы хотите преобразовать, в одном столбце.

awk '{kDa=$1/1000; print kDa}' daltons >> result

Где kDa является переменной для сохранения операции, а $1 будет принимать каждое из значений строк. Наконец, результаты сохраняются в файле result.

1
ответ дан 18 July 2018 в 06:15

Общее описание

Предположим, что числовое значение сохраняется в переменной dalton. Затем он работает со значениями, которые достаточно велики для создания ненулевых значений с помощью простой конструкции $(()).

Пример:

$ dalton=3800 $ echo $(($dalton/1000)) 3

Чтобы получить правильное округление до ближайшего целого числа

$ echo $(( ($dalton+500)/1000 )) 4

У вас есть больше возможностей, если вы устанавливаете bc.

sudo apt-get install bc $ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. scale=3 # set the number of decimals dalton=3800 dalton/1000 3.800 (dalton+0,5)/1000 (standard_in) 4: syntax error # use decimal point (not comma) (dalton+0.5)/1000 # add 0.5 to get correct rounding 3.800 dalton=3800.8 (dalton+0.5)/1000 3.801 dalton=3800.2 (dalton+0.5)/1000 3.800 quit $

В shellscript вы можете вставлять вход в bc так,

echo "scale=3 ($dalton+0.5)/1000" | bc

, который также может быть протестирован в интерактивном режиме,

$ dalton=3800.8 $ echo "scale=3 ($dalton+0.5)/1000" | bc 3.801 $

Shellscript

Создайте shellscript с именем converter

#!/bin/bash dalton= function convert2kilo { echo "scale=6 ($dalton+0.0005)/1000" | bc } ######################################################################## # main ######################################################################## while read dalton do convert2kilo done

и входной файл с именем input.data

12345.09 236575.665 18865.41 45678.87 1.0008 1.0002

Сделать исполняемый файл shellscript

chmod ugo+x converter

Запустить shellscript

$ < input.data ./converter 12.345090 236.575665 18.865410 45.678870 .001001 .001000 $
6
ответ дан 18 July 2018 в 06:15

Этот маленький скрипт был бы полезен:

#!/bin/bash values="$1" echo "Source of values: $values" while read -e name; do results=$(bc <<< "scale=4; ($name/1000)") echo "$results" done < "$values"

Использование:

Сделать исполняемый файл с помощью: chmod u+x dalton.sh Запустить и передать путь к файлу данных или имени файла : ./dalton.sh data.txt
3
ответ дан 18 July 2018 в 06:15

Предположим, что у вас есть текстовый файл с именем daltons, например, со всеми численными значениями, которые вы хотите преобразовать, в одном столбце.

awk '{kDa=$1/1000; print kDa}' daltons >> result

Где kDa является переменной для сохранения операции, а $1 будет принимать каждое из значений строк. Наконец, результаты сохраняются в файле result.

1
ответ дан 24 July 2018 в 18:34
  • 1
    Хотя это не имеет выходной точности, исходный плакат показывал в своем примере вывода (например, он дает 12.3451 вместо 12.34509), это, как правило, хороший подход. Назначение переменной (kDa) перед печатью, возможно, делает команду более самостоятельной документацией, но не нужна, поскольку аргумент print может быть арифметическим выражением. То есть awk '{print $1/1000}' daltons >> result имеет тот же эффект. – Eliah Kagan 25 September 2017 в 16:11

Общее описание

Предположим, что числовое значение сохраняется в переменной dalton. Затем он работает со значениями, которые достаточно велики для создания ненулевых значений с помощью простой конструкции $(()).

Пример:

$ dalton=3800 $ echo $(($dalton/1000)) 3

Чтобы получить правильное округление до ближайшего целого числа

$ echo $(( ($dalton+500)/1000 )) 4

У вас есть больше возможностей, если вы устанавливаете bc.

sudo apt-get install bc $ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. scale=3 # set the number of decimals dalton=3800 dalton/1000 3.800 (dalton+0,5)/1000 (standard_in) 4: syntax error # use decimal point (not comma) (dalton+0.5)/1000 # add 0.5 to get correct rounding 3.800 dalton=3800.8 (dalton+0.5)/1000 3.801 dalton=3800.2 (dalton+0.5)/1000 3.800 quit $

В shellscript вы можете вставлять вход в bc так,

echo "scale=3 ($dalton+0.5)/1000" | bc

, который также может быть протестирован в интерактивном режиме,

$ dalton=3800.8 $ echo "scale=3 ($dalton+0.5)/1000" | bc 3.801 $

Shellscript

Создайте shellscript с именем converter

#!/bin/bash dalton= function convert2kilo { echo "scale=6 ($dalton+0.0005)/1000" | bc } ######################################################################## # main ######################################################################## while read dalton do convert2kilo done

и входной файл с именем input.data

12345.09 236575.665 18865.41 45678.87 1.0008 1.0002

Сделать исполняемый файл shellscript

chmod ugo+x converter

Запустить shellscript

$ < input.data ./converter 12.345090 236.575665 18.865410 45.678870 .001001 .001000 $
6
ответ дан 24 July 2018 в 18:34

Этот маленький скрипт был бы полезен:

#!/bin/bash values="$1" echo "Source of values: $values" while read -e name; do results=$(bc <<< "scale=4; ($name/1000)") echo "$results" done < "$values"

Использование:

Сделать исполняемый файл с помощью: chmod u+x dalton.sh Запустить и передать путь к файлу данных или имени файла : ./dalton.sh data.txt
3
ответ дан 24 July 2018 в 18:34
  • 1
    Способ perl особенно хорош, потому что он не требует ничего особенного, чтобы сохранить все цифры, показанные OP в их примере вывода. – Eliah Kagan 25 September 2017 в 13:26

Другие вопросы по тегам:

Похожие вопросы: