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 awk
Lösung:
awk '$1 == "Uptime" && $3 > 100 {print}' file1
Uptime is 172 days
Uptime is 562 days
Antwort2
...und eine etwas komplexere bash
Lö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 grep
Lö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 100
gefolgt vom Zeilenende verworfen.
Antwort4
Konvertierung aus meinem Kommentar.
Mit grep
und awk
zusammen:
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.