ファイル内で 100 日を超える稼働時間を検索する方法はありますか?

ファイル内で 100 日を超える稼働時間を検索する方法はありますか?

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 より大きい場合は印刷します。

関連情報