我想使用echo | bc命令来计算大量的计算。例如:
echo "scale=8; sqrt($NUM)" | bc -l
计算NUM的平方根到8位十进制数字的精度。
现在假设我有一个文件numbers.txt
,其中包含很多数字,并且我想计算所有数字的平方根。
我尝试使用
grep -ow "^[0-9]*$" numbers.txt | xargs -I '{}' echo "scale=8; sqrt({})" | bc -l
grep -ow "^[0-9]*$" numbers.txt | xargs -I '{}' (echo "scale=8; sqrt({})" | bc -l)
grep -ow "^[0-9]*$" numbers.txt | xargs -I '{}' $(echo "scale=8; sqrt({})" | bc -l)
read num numbers.txt | echo "scale=8; sqrt($num)" | bc -l
以及其中的一些其他变体,但找不到使它起作用的方法。 有任何想法吗?
答案 0 :(得分:0)
您的第一行工作正常:
grep -ow "^[0-9]*$" numbers.txt | xargs -I {} echo "scale=8; sqrt({})" | bc -l
答案 1 :(得分:0)
在我之前的赛勒斯是对的。
我的问题是每行中都有更多数据,而我使用grep时并没有“抓住”它。 (grep "^[0-9]*$"
由于第^
和$
个符号而查找仅包含数字的行。
将grep
更改为egrep
后,以下行:
egrep -ow "[0-9]+" numbers.txt | xargs -I {} echo "scale=8; sqrt({})" | bc -l
完全解决了我的问题。