Bash bc 给出空白结果的浮点运算?
Bash floating point arithmetic with bc giving blank result?
我正在尝试使用 grep 计算文本文件中某个单词的出现次数,然后使用 bc 将该结果(整数)乘以小数。但是,结果只是一个空白值(我猜是空字符串?)。
我计算文件中单词出现次数的方法是:
result=$(grep -i -o "$word" $file | wc -l)
然后我尝试通过(其中 value
是小数 )对结果进行浮点数学运算:
sum="value * ( $result )" | bc
但是在终端中,我只得到 blank/empty 行作为结果,没有值或任何东西。我做错了什么?
您可以只使用 Bash
#!/bin/bash
result=$(grep -io "$word" "$file" | wc -l)
sum=$((value*result))
echo -e "$word founded $result times.\n$result * $value = $sum"
输出
darby@Debian:~$ word='toyota'
darby@Debian:~$ file="$HOME/Scrivania/file"
darby@Debian:~$ value=7
darby@Debian:~$ result=$(grep -io "$word" "$file" | wc -l)
darby@Debian:~$ sum=$((value*result))
darby@Debian:~$ echo -e "$word founded $result times.\n$result * $value = $sum"
toyota founded 2 times.
2 * 7 = 14
darby@Debian:~$
或使用 bc
的单行解决方案
darby@Debian:~$ echo "$value * $(grep -io "$word" "$file" | wc -l)" | bc
14
darby@Debian:~$
这是一道简单的语法题。但首先:您知道 grep 的 -c
吗?如
grep -i -c -o pattern file
这将为您节省 wc
。
你通过管道输出
sum="value * ( $result )"
到公元前。那不会产生输出。你可能想要
sum=$(echo "183276 * $result" | bc)
和
echo $sum
我正在尝试使用 grep 计算文本文件中某个单词的出现次数,然后使用 bc 将该结果(整数)乘以小数。但是,结果只是一个空白值(我猜是空字符串?)。
我计算文件中单词出现次数的方法是:
result=$(grep -i -o "$word" $file | wc -l)
然后我尝试通过(其中 value
是小数 )对结果进行浮点数学运算:
sum="value * ( $result )" | bc
但是在终端中,我只得到 blank/empty 行作为结果,没有值或任何东西。我做错了什么?
您可以只使用 Bash
#!/bin/bash
result=$(grep -io "$word" "$file" | wc -l)
sum=$((value*result))
echo -e "$word founded $result times.\n$result * $value = $sum"
输出
darby@Debian:~$ word='toyota'
darby@Debian:~$ file="$HOME/Scrivania/file"
darby@Debian:~$ value=7
darby@Debian:~$ result=$(grep -io "$word" "$file" | wc -l)
darby@Debian:~$ sum=$((value*result))
darby@Debian:~$ echo -e "$word founded $result times.\n$result * $value = $sum"
toyota founded 2 times.
2 * 7 = 14
darby@Debian:~$
或使用 bc
的单行解决方案darby@Debian:~$ echo "$value * $(grep -io "$word" "$file" | wc -l)" | bc
14
darby@Debian:~$
这是一道简单的语法题。但首先:您知道 grep 的 -c
吗?如
grep -i -c -o pattern file
这将为您节省 wc
。
你通过管道输出
sum="value * ( $result )"
到公元前。那不会产生输出。你可能想要
sum=$(echo "183276 * $result" | bc)
和
echo $sum