Awk

由於 uptime 命令的輸出更改,無法獲取第 n 列數據

  • February 17, 2021

下面是 Solaris 的正常執行時間輸出,我從中提取倒數第三列:

uptime
8:30pm  up 23 day(s), 17:46,  5 users,  load average: **2.79**, 1.79, 1.53

我總是需要在上面以粗體突出顯示倒數第三列,即2.79

echo '8:30pm  up 23 day(s), 17:46,  5 users,  load average: 2.79, 1.79, 1.53' | awk '{ print substr($10, 1, length($10)-1) }'

Output:
2.79

但有時它會在正常執行時間輸出18 hr(s)而不是17:46如下所示時失敗:

echo '8:44pm  up 23 day(s), 18 hr(s),  5 users,  load average: 1.08, 1.12, 1.22' | awk '{ print substr($10, 1, length($10)-1) }'

Output:
average

一個簡單的解決方案可能是搜尋最後一列減去 3 的列,即最後一列的第三列,因為最後三列始終是數字並且不會改變。但是,我不確定如何做。

你能建議嗎?

閱讀man cut並執行以下操作:

uptime  | cut -d, -f4 | cut -d: -f2

你可以試試這個。

awk -F ':' '{ print 0+substr($NF, 1, -1+index($NF,","))}'

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