Text-Processing

用 grep 計數

  • July 25, 2019

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

使用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}')

根據提供的輸入,您可以使用該dc實用程序:

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

注意:這是假設您連續共有 7 列。

引用自:https://unix.stackexchange.com/questions/531948