Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash-Shell中的计算_Bash_Bc - Fatal编程技术网

Bash-Shell中的计算

Bash-Shell中的计算,bash,bc,Bash,Bc,如何计算以下数据 Input: 2 Printers 2 x 2 Cartridges 2 Router 1 Cartridge 输出: Total Number of Printers: 2 Total Number of Cartridges: 5 Total Number of Router: 2 请注意,盒带已乘以(2 x 2)+1=5。我尝试了以下方法,但不确定在出现(2 x 2)场景类型时如何获取号码: awk -F " " '{print $1}' Cartridges.t

如何计算以下数据

Input:

2 Printers
2 x 2 Cartridges
2 Router
1 Cartridge
输出:

Total Number of Printers: 2
Total Number of Cartridges: 5 
Total Number of Router: 2
请注意,盒带已乘以
(2 x 2)+1=5
。我尝试了以下方法,但不确定在出现
(2 x 2)
场景类型时如何获取号码:

awk -F " " '{print $1}' Cartridges.txt >> Cartridges_count.txt
CartridgesCount=`( echo 0 ; sed 's/$/ +/' Cartridges_count.txt; echo p ) | dc`

echo "Total Number of Cartridges: $CartridgesCount"
请告知。

尝试类似的方法(假设输入格式正确)

p.S.墨盒和墨盒是不同的。如果您也想解决这个问题,那就更加困难了,但您可以修改管道中的最后一个awk。

尝试类似的方法(假设输入格式良好)


p.S.墨盒和墨盒是不同的。如果您也想处理这个问题,则会更加困难,但您可以修改管道中的最后一个awk。

这假设数据中只有乘法运算符

awk '{$NF = $NF "s"; sub("ss$", "s", $NF); qty = $1; for (i = 2; i < NF; i++) {if ($i ~ /^[[:digit:]]+$/) {qty *= $i}}; items[$NF] += qty} END {for (item in items) {print "Total number of", item ":", items[item]}}'
awk'{$NF=$NF“s”;sub(“ss$”,“s”,$NF);qty=$1;for(i=2;i
分为多行:

awk '{
        $NF = $NF "s"; 
        sub("ss$", "s", $NF); 
        qty = $1; 
        for (i = 2; i < NF; i++) {
            if ($i ~ /^[[:digit:]]+$/) {
                qty *= $i
            }
        }; 
        items[$NF] += qty
     } 
     END {
         for (item in items) {
             print "Total number of", item ":", items[item]
         }
     }'
awk'{
$NF=$NF“s”;
次级(“ss$”、“s”、$NF);
数量=1美元;
对于(i=2;i
这假设数据中只有乘法运算符

awk '{$NF = $NF "s"; sub("ss$", "s", $NF); qty = $1; for (i = 2; i < NF; i++) {if ($i ~ /^[[:digit:]]+$/) {qty *= $i}}; items[$NF] += qty} END {for (item in items) {print "Total number of", item ":", items[item]}}'
awk'{$NF=$NF“s”;sub(“ss$”,“s”,$NF);qty=$1;for(i=2;i
分为多行:

awk '{
        $NF = $NF "s"; 
        sub("ss$", "s", $NF); 
        qty = $1; 
        for (i = 2; i < NF; i++) {
            if ($i ~ /^[[:digit:]]+$/) {
                qty *= $i
            }
        }; 
        items[$NF] += qty
     } 
     END {
         for (item in items) {
             print "Total number of", item ":", items[item]
         }
     }'
awk'{
$NF=$NF“s”;
次级(“ss$”、“s”、$NF);
数量=1美元;
对于(i=2;i
我添加了一个“bc”标签以吸引回应。@noa
bash
有3.7K个追随者,而
bc
没有追随者。添加该标记将不会吸引任何额外的响应。这对于bash编程来说是非常重要的。这是一种自我强加的痛苦,还是有外部要求迫使你不要使用更强大的语言?@chrisaycock:标记也用于搜索,而不仅仅是跟踪。你有一套固定的库存项目可以在输入中出现吗?如果是这样的话,它们都有一个主流的常规复数吗?我添加了一个“bc”标签以吸引回应。@noa
bash
有3.7K追随者,而
bc
没有追随者。添加该标记将不会吸引任何额外的响应。这对于bash编程来说是非常重要的。这是一种自我强加的痛苦,还是有外部要求迫使你不要使用更强大的语言?@chrisaycock:标记也用于搜索,而不仅仅是跟踪。你有一套固定的库存项目可以在输入中出现吗?如果是这样,它们是否都有一个主流的规则复数?