我想对从while
循环读取的某些变量执行一些算术和浮点算术运算。我的代码如下:
while read n p qlen slen len; do
random_var=$(( $qlen + 0 )) # gives all zeros, not saving qlen
qcov=$(echo $len / $qlen | bc -l) #len and qlen are nothing, not working
qcov=$( bc <<< "scale=3; $len / $qlen" ) #same reason as above, not working
done < input_file.txt
我要提取input_file.txt
中的每一行,并将数据解析为各自的变量名n
,p
,qlen
,slen
和{ {1}}。输入文件len
如下所示:
input_file.txt
我遇到的问题是,当我尝试对test1 12.345 123 234 12
test2 23.456 345 678 43
test3 98.765 6537 874 346
...
中的任何变量执行一些算术运算时。我可以read
很好地使用变量,但是一旦我尝试执行任何一种算术操作,这些值就一无所有。我怀疑它们不是以某种字符串类型(?)开头的数字。我尝试了许多整数和浮点算术语句,但似乎无法保留变量中的值。 echo
命令,算术扩展,bc
用管道传输到echo
,三重bc
到<<<
的情况下,我在网上找到的所有这些解决方案都无法使用。
我收到的最常见错误是:
我已经考虑过使用bc
,但是我需要在每一行上执行这些操作,而awk一直持续到文件末尾。是否还有一种方法可以使用awk
做我想做的事情?我真的不知道。
如果有人有答案或从文件中提取数据的另一种方法,我将非常感激。
谢谢。
更新:
有些对代码的摆弄使我意识到awk
中的所有内容都只保存到第一个变量input_file.txt
中。这就是为什么其他变量为空以及所有变量的回显看起来正确的原因。
有什么想法为什么不能将值保存到正确的变量中?
答案 0 :(得分:1)
我不知道您真正想要获得什么。但看起来像
awk '{print $5/$3}' input_file.txt
0.097561
0.124638
0.0529295