Standard1988
Anmeldungsdatum: 28. Dezember 2010
Beiträge: 87
|
Hallo, ich möchte gerne aus einer Datei mehrere Statuse abfragen und wenn diese alle zutreffen eine Ausgabe "true" ausgeben: | # cat out
Balancer: node, Group: function1, packet: 1, ping 44213, Status : OK, Read: 242911, Connected: 2
Balancer: node, Group: function1, packet: 1, ping 33214, Status : OK, Read: 242411, Connected: 5
Balancer: node, Group: function1, packet: 1, ping 21321, Status : OK, Read: 264211, Connected: 1
|
Um den Status abzufragen mach ich es so: | # grep ^Balancer out | cut -d "," -f 5 | cut -d " " -f 4
OK
OK
OK
|
Kann ich den grep-Befehl noch kürzen (vielleicht mit sed oder awk)? Wie kann ich nun Alle "OK"s prüfen, dass alle OK zeigen? Also sprich: OK OK OK = OK OK NOTOK OK = NOTOK NOTOK OK OK = NOTOK usw. Ich habe es mit einer For-Schleife und dann mit einer If-Abfrage versucht, aber dann bekomme ich nicht alle drei Werte gleichzeitig rein. Grüße Standard
|
xubuntufriese
Anmeldungsdatum: 3. Mai 2014
Beiträge: 340
|
awk '{ok=ok $11}END{if(ok=="OK,OK,OK,"){print "OK"}else{print "NOTOK"}}' out
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11179
Wohnort: München
|
Reicht es nicht in der Ausgabe nach NOTOK zu suchen und in dem Fall einen Fehler anzunehmen oder gibt es noch andere Werte, die der Status annehmen kann?
| if grep ^Balancer out | cut -d "," -f 5 | cut -d " " -f 4 | grep -q NOTOK; then
echo "NOTOK"
else
echo "OK"
fi
|
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
1
2
3
4
5
6
7
8
9
10
11
12 | echo 'Balancer: node, Group: function1, packet: 1, ping 44213, Status : OK, Read: 242911, Connected: 2
Balancer: node, Group: function1, packet: 1, ping 33214, Status : NOTOK, Read: 242411, Connected: 5
Balancer: node, Group: function1, packet: 1, ping 21321, Status : OK, Read: 264211, Connected: 1
' | grep -o ': OK'
: OK
: OK
echo 'Balancer: node, Group: function1, packet: 1, ping 44213, Status : OK, Read: 242911, Connected: 2
Balancer: node, Group: function1, packet: 1, ping 33214, Status : NOTOK, Read: 242411, Connected: 5
Balancer: node, Group: function1, packet: 1, ping 21321, Status : OK, Read: 264211, Connected: 1
' | grep -oc ': OK'
2
|
|
Standard1988
(Themenstarter)
Anmeldungsdatum: 28. Dezember 2010
Beiträge: 87
|
Danke. Das mit AWK finde ich gut und grep -oc Das kannte ich noch nicht
|