Gibt es eine Möglichkeit, in einer Datei nach einer Betriebszeit von mehr als 100 Tagen zu suchen?

Gibt es eine Möglichkeit, in einer Datei nach einer Betriebszeit von mehr als 100 Tagen zu suchen?

Gibt es eine Möglichkeit, mit Linux-Bash-Befehlen in einer Datei nach einer Betriebszeit von mehr als 100 Tagen zu suchen?

Enthält beispielsweise file1:

Uptime is 172 days

Uptime is 562 days

Uptime is 30 days

downtime is 197 days

Welchen Befehl kann ich verwenden, um eine Ausgabe wie diese zu erhalten:

Uptime is 172 days

Uptime is 562 days

Antwort1

Hier ist eine einfache awkLösung:

awk '$1 == "Uptime" && $3 > 100 {print}' file1
Uptime is 172 days
Uptime is 562 days

Antwort2

...und eine etwas komplexere bashLösung:

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

Antwort3

Und eine grepLösung mit erweiterten regulären Ausdrücken:

grep -E 'Uptime is [[:digit:]]{3}' uptime | \
  grep -Ev 'Uptime is 100'

Dadurch wird die Zeichenfolge „Uptime is“ gefolgt von mindestens 3 Ziffern gefunden und die genaue Zahl 100gefolgt vom Zeilenende verworfen.

Antwort4

Konvertierung aus meinem Kommentar.

Mit grepund awkzusammen:

grep "Uptime" file1 | awk '$3 > 100 {print}'

Suchen Sie nach „Uptime“ file1, sehen Sie sich dann die 3. Spalte an und drucken Sie sie aus, wenn sie über 100 liegt.

verwandte Informationen