有什麼方法可以透過 Linux Bash 命令在檔案中搜尋大於 100 天的正常運行時間嗎?
例如,file1
包含:
Uptime is 172 days
Uptime is 562 days
Uptime is 30 days
downtime is 197 days
我可以使用什麼命令來獲得以下輸出:
Uptime is 172 days
Uptime is 562 days
答案1
這是一個簡單的awk
解決方案:
awk '$1 == "Uptime" && $3 > 100 {print}' file1
Uptime is 172 days
Uptime is 562 days
答案2
……以及更複雜一點的bash
解決方案:
while read -r a b c d; do
[[ $a = Uptime && $c -gt 100 ]] && printf '%s %s %s %s\n' $a $b $c $d
done < uptime
Uptime is 172 days
Uptime is 562 days
答案3
以及grep
使用擴展正規表示式的解決方案:
grep -E 'Uptime is [[:digit:]]{3}' uptime | \
grep -Ev 'Uptime is 100'
這將找到「Uptime is」字串,後面跟著至少 3 位數字,並丟棄100
後跟 End-of-line 的確切數字。
答案4
從我的評論轉換。
一起使用grep
和awk
:
grep "Uptime" file1 | awk '$3 > 100 {print}'
尋找“Uptime”,file1
然後查看第三列,如果大於 100,則列印。