从文件中解析数字并使用它们来计算

Parsing Numbers from a File and using those to calculate

我用 Bash 解析一些 HTML 文件似乎很愚蠢。我们有一些文件,其中包含以下行:

var A4_total = 2018 + 4730;
var Other1_total = 3242 + 3828;

(他们告诉我们打印机打印了多少页)。 我需要一起计算前两个值(2018 和 3242)。我的方法是:

hilfsvar1=$(echo `grep -F var\ A4_total StatCntMedia.htm | sed 's/var\ A4\_total\ \=\ //g'` | sed -ne "s/^[^=]\++//p"  | sed 's/;//g'); hilfsvar2=$(echo `grep -F var\ Other1_total StatCntMedia.htm | sed 's/var\ Other1\_total\ \=\ //g'` | sed -ne "s/^[^=]\++//p"  | sed 's/;//g'); echo "$hilfsvar1 + $hilfsvar2" | bc

这会失败。这两个变量确实有正确的内容:

[User]# echo $hilfsvar1
4730
[User]# echo $hilfsvar2
3828

但这是我无法前进的地方:

[User]# echo "$hilfsvar1 + $hilfsvar2"
 +  3828

(对于我的脚本,我很抱歉,我对脚本语言没有更深入的了解:))-如果有人有解决方案,我很乐意以另一种方式解决这个问题。

提前致谢,乔纳斯

试试这样的:

awk '/A4_total|Other1_total/ {print +}' StatCntMedia.htm 
Output:
6748
7070

搜索 A4_total 或 Other1_total,添加由 space 分隔的第 4 和第 6 个字段并显示输出。

听起来这可能就是您要找的:

$ awk '{sum[4]+=; sum[6]+=} END{print sum[4], sum[6]}' file
5260 8558

如果不是,请更新您的问题以显示预期输出。

看来您可能完全走错了路,并试图在 shell 中做一些本应完全在 awk 中完成的事情。