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
その後に続く行末が破棄されます。
答え4
私のコメントから変換します。
grep
と を一緒に使用するとawk
、次のようになります。
grep "Uptime" file1 | awk '$3 > 100 {print}'
「Uptime」を探しfile1
、3 番目の列を見て、100 より大きい場合は印刷します。