我在 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 列。