Questions tagged «arithmetic»

该标记适用于与数学运算有关的所有事情。因此,如果您想问一个关于在“ awk”中进行计算的问题,或者您有一个关于“ bc”的问题,那么使用此标签是正确的。



4
按位移位和Bash中的最大整数
这是一个探索性问题,意味着我不确定这个问题是什么,但是我认为这与Bash中最大的整数有关。无论如何,我会表面上定义它。 $ echo $((1<<8)) 256 我通过移位产生一个整数。我可以走多远? $ echo $((1<<80000)) 1 显然,目前还没有。(1是意外的,我将返回。)但是, $ echo $((1<<1022)) 4611686018427387904 仍然是积极的。但是,这不是: $ echo $((1<<1023)) -9223372036854775808 再往前走一步 $ echo $((1<<1024)) 1 为什么是1?以及为什么以下? $ echo $((1<<1025)) 2 $ echo $((1<<1026)) 4 有人想分析这个系列吗? 更新 我的机器: $ uname -a Linux tomas-Latitude-E4200 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC …
16 bash  arithmetic 

2
如何在Bash中增加局部变量?
数据 1 \begin{document} 3 码 #!/bin/bash function getStart { local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)" echo $START } START2=$(getStart) echo $START2 返回,2但我想要3。我通过关于如何在bash脚本中添加数字的答案未成功更改结尾: START2=$((getStart+1)) 如何在Bash脚本中增加局部变量?

2
如何在shell中四舍五入浮点数?
如何在命令行上正确舍入IEEE 754浮点数? 我想指定输出数字的精度-小数位数。 例如,舍入6.66到精度1应给出6.7。下表中的更多内容: Value Precision Rounded 6.66 0 7 6.66 1 6.7 6.66 2 6.66 6.66 3 6.660 6.666 3 6.666 6.6666 3 6.667 它应该可以在交互式Shell中使用,但理想情况下要足够健壮,以便在生产Shell脚本中使用它。

6
为什么“ $((〜33))”产生-34?
$ echo $(( 255 )) 255 $ echo $(( 33 )) 33 $ echo $(( ~33 )) -34 $ echo $(( ~255 )) -256 $ 而我的内核是: $ uname -a Linux HOSTNAME 3.2.0-40-generic-pae #64-Ubuntu SMP Mon Mar 25 21:44:41 UTC 2013 i686 i686 i386 GNU/Linux 问题: ~用于否定数字FAIKK。但是为什么~33产生-34,为什么~255产生-256?
12 bash  shell  arithmetic 

8
如何使用bash求和时间?
我想知道一系列过程将花费在我的计算机上的总时间,以确定我应该在那运行还是在功能更强大的计算机上运行。因此,我正在预测每个命令的运行时间。输出如下: process1 00:03:34 process2 00:00:35 process3 00:12:34 如何汇总第二列以获得总运行时间?我可以尝试通过每行 awk '{sum += $2 } END { print sum } 但这是没有意义的,因为这些值不是自然数。
12 bash  time  arithmetic 

2
awk高精度算术
我正在寻找一种方法来告诉awk在替换操作中执行高精度算术。这涉及从文件中读取字段,并以该值的1%增量替换它。但是,我在那里失去了精度。这是问题的简化重现: $ echo 0.4970436865354813 | awk '{gsub($1, $1*1.1)}; {print}' 0.546748 在这里,十进制精度后我有16位数字,但是awk仅给出6位数字。使用printf,我得到相同的结果: $ echo 0.4970436865354813 | awk '{gsub($1, $1*1.1)}; {printf("%.16G\n", $1)}' 0.546748 关于如何获得所需精度的任何建议?

4
计算变量,并将其输出到另一个变量
我知道的唯一计算器是bc。我想添加1到一个变量,然后输出到另一个变量。 我nextnum从计数文件中的字符串得到了变量: nextnum=`grep -o stringtocount file.tpl.php | wc -w` 可以说nextnum值为1。当添加时1,它将变为2。要计算,我运行: rownum=`$nextnum+1 | bc` 但出现错误: 1+1: command not found 我只是在计算部分失败。我试过更改反引号,但仍然无法正常工作。我不知道如何计算变量并将其输出到另一个变量。

1
bash shell不警告您算术溢出等原因是什么?
bashShell 的算术评估功能设置了限制。该手册简要介绍了Shell算术的这一方面,但指出: 评估以固定宽度的整数完成,不检查溢出,尽管陷阱会被除以0并标记为错误。运算符及其优先级,关联性和值与C语言相同。 它所指的是哪个固定宽度整数,实际上是关于所使用的数据类型(以及为何超出此范围的详细信息),但是极限值是以/usr/include/limits.h这种方式表示的: # if __WORDSIZE == 64 # define ULONG_MAX 18446744073709551615UL # ifdef __USE_ISOC99 # define LLONG_MAX 9223372036854775807LL # define ULLONG_MAX 18446744073709551615ULL 一旦知道了,就可以像下面这样确认事实: # getconf -a | grep 'long' LONG_BIT 64 ULONG_MAX 18446744073709551615 这是一个64位整数,在算术评估的上下文中直接在shell中转换: # echo $(((2**63)-1)); echo $((2**63)); echo $(((2**63)+1)); echo $((2**64)) 9223372036854775807 //the practical usable limit …

3
case +如何在大小写语法中实现等于或小于或等于
我的目标是使用(仅使用case+ esac)验证数字范围,然后打印该范围。因此,例如: 如果数字介于0到80之间,请打印 >=0<=80 如果数字介于81到100之间,则打印 >=81<=100 等等 >=0<=90仅当数字介于0和9之间时,下面的脚本问题才会打印。如何修复脚本,以便根据数字范围打印正确的输出? #!/bin/ksh read number case $number in [0-80]) echo ">=0<=80";; [81-100]) echo ">=81<=100";; [101-120]) echo ">=101<=120";; [121-300]) echo ">=121<=300";; esac

3
在shell脚本中添加极大的数字
假设两个数字存储在两个不同的文件中,a.txt并且b.txt。 每个数字都足够大(超过30个数字),而所使用的数字数据类型不支持该数字bash。 如何在外壳中添加它们?


2
尝试在Perl重命名工具(Debian)中进行算术运算
假设我有五个mp3文件: 01-trackfoo.mp3 02-trackbar.mp3 03-trackbaz.mp3 04-trackabc.mp3 05-trackxyz.mp3 现在,我快速聆听文件(只需在控制台上的mplayer就能解决问题),然后发现音轨顺序错误。05实际上是02,其余的将不得不重命名。所以首先我将进行临时重命名: 01-trackfoo.mp3 02-trackbar.mp3 03-trackbaz.mp3 04-trackabc.mp3 00-trackxyz.mp3 现在我们需要一个“移位”:02应该变成03,03应该变成04,04应该变成05。为了最大程度地减少混乱,将mv稍后编辑ex-05(现在为00)。 我的方法是这样的:(perl rename,由Larry Wall提供,默认为Debian) rename 's/0([2-4])([\s\S]+)/0($1+1)$2/' * 以及(之后再进行一些RTFM操作) rename 's/0([2-4])([\s\S]+)/0($1+1)$2/e' * 它们都/e[val]不起作用,特别是因为修饰符除了求值以外不接受其他任何东西,并且一旦您尝试将求值与字符串结合起来就会抛出错误。该bash能做到这一点就好了,例如, foo$((1+6))将被评估到foo7。 那么,我该怎么做(首选单行代码,不打算为此编写整个独立脚本)?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.