私は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つの列があると想定しています。