使用 grep 获取计数

使用 grep 获取计数

我在 sun10 Solaris 操作系统上工作,我有一个通过使用以下命令返回表的进程dmh -q 12

*PROFILE   PRIORITY   COMM_TYPE     QID    # OF MSGS   ATTRIBUTES/VALUES*
      13        999          DC      24            3     32  1865
      13        999          DC      94            1     32  1665
      13        999          DC     157            0     32  1961
      13        999          DC     188            2     32  1784
      13        999          DC     293            0     32  1625
      13        999          DC     294           31     32  1950
      13        999          DC     713            0     32  1601
      13        999          DC     838            0     32  1607
      13        999          DC    1458            0     32  1855

在这里,我试图获取消息总数并将其存储在我已经尝试过的变量中,但它对我不起作用:

dmh -q 12 | grep -v'# OF MSGS' | wc -l 

预期结果应该是 37

答案1

使用awk

dmh -q 12 | awk 'NR > 1 { sum += $5 } END {print sum}'

这将对第 5 列中的所有值求和,然后打印总计。

要将其存储在变量中,请使用命令替换:

var=$(dmh -q 12 | awk 'NR > 1 { sum += $5 } END {print sum}')

答案2

根据提供的输入,您可以使用该dc实用程序:

$ dmh -q 12 | sed -e '1d;y/-/_/' | dc -e "[lMpq]sq [s0s0lM+sM]sm [?z0=qlmxcz0=?]s? 0sMl?x"
37

注意:这是假设您一行中总共有 7 列。

相关内容