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

时间:2015-01-08 10:58:52

标签: bash sed bc

我似乎很愚蠢用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

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

提前致谢,Jonas

2 个答案:

答案 0 :(得分:1)

听起来这可能是你正在寻找的东西:

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

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

看起来你可能完全走错了路,并尝试做一些应该完全用awk完成的shell。

答案 1 :(得分:0)

尝试类似:

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

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