как управлять математическими данными в первых полях и назначать переменную Linux - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть файл, содержащий всего 2 номера.Одно число в строке eash.

4.1865E+02
4.1766E+02

Я знаю, что-то в строке BHF = ($ 1 от строки 1 - $ 1 от строки 2), но могу найти точную команду.

Как мне это сделать?математическая операция над ними и сохранение результата в переменной.

PS: это было получено с помощью

sed  -i -e '/^$/d' nodout15  
sed -i -e  's/^[ \t]*//;s/[ \t]*$//' nodout15  
awk ' {print $13} ' nodout15 > 15
mv 15 nodout15
sed  -i -e '/^$/d' nodout15  
sed -i -e  's/^[ \t]*//;s/[ \t]*$//' nodout15  
sed  -n '/^[0-9]\{1\}/p' nodout15  > 15
mv 15 nodout15
tail -2 nodout15 > 15
mv 15 nodout15

После всего этого у меня есть эти два числа, и теперь я не могу сделатьнемного арифметики.Если возможно, пожалуйста, скажите мне короткую форму, чтобы сделать это на месте, а не делать все это воровство.Nodout - это файл с разной длиной столбцов, поэтому меня интересует только 13-й столбец.Поскольку все строки не будут в дочернем файле, пустые строки будут удалены.Тогда только те строки, которые нужно взять, начиная с номера.Затем две последние строки, так как они показывают конечное состояние.Разница между ними приведет к условному утверждению.поэтому мне нужно сохранить его в переменной.

regards.

1 Ответ

1 голос
/ 29 февраля 2012

AWK

$ BHF=`awk -v RS='' '{print $1-$2}' input.txt`
$ echo $BHF
0.99

Ьс

$ BHF=`cat input.txt | xargs printf '%f-%f\n' | bc`
$ echo $BHF
.990000
...