Wenn ich also eine Datei mit cat
und dann mit öffne grep
, um übereinstimmende Zeilen zu erhalten, komme ich nur dann weit, wenn ich mit dem bestimmten Protokollsatz arbeite, mit dem ich es zu tun habe. Es ist eine Möglichkeit erforderlich, Linien mit einem Muster abzugleichen, aber nur den Teil der Linie nach dem Abgleich zurückzugeben. Der Anteil vor und nach dem Spiel wird konstant variieren. Ich habe mit sed
oder gespielt awk
, konnte aber nicht herausfinden, wie die Linie gefiltert werden kann, um entweder den Teil vor dem Spiel zu löschen oder den Teil nach dem Spiel zurückzugeben. Dies ist ein Beispiel für eine Zeile, die ich filtern muss:
2011-11-07T05:37:43-08:00 <0.4> isi-udb5-ash4-1(id1) /boot/kernel.amd64/kernel: [gmp_info.c:1758](pid 40370="kt: gmp-drive-updat")(tid=100872) new group: <15,1773>: { 1:0-25,27-34,37-38, 2:0-33,35-36, 3:0-35, 4:0-9,11-14,16-32,34-38, 5:0-35, 6:0-15,17-36, 7:0-16,18-36, 8:0-14,16-32,34-36, 9:0-10,12-36, 10-11:0-35, 12:0-5,7-30,32-35, 13-19:0-35, 20:0,2-35, down: 8:15, soft_failed: 1:27, 8:15, stalled: 12:6,31, 20:1 }
Die Portion, die ich brauche, ist alles nach "ins Stocken geraten".
Der Hintergrund dahinter ist, dass ich herausfinden kann, wie oft etwas stehen bleibt:
cat messages | grep stalled | wc -l
Was ich tun muss, ist herauszufinden, wie oft ein bestimmter Knoten angehalten hat (angezeigt durch den Teil vor jedem Doppelpunkt nach "angehalten") Keine Blockierungen, was mir nicht hilft. Ich muss nur den blockierten Teil filtern, damit ich dann nach einem bestimmten Knoten aus denen suchen kann, die blockiert haben.
In jeder Hinsicht ist dies ein freebsd-System mit Standard-GNU-Kern-Utils, aber ich kann keine zusätzlichen Hilfsprogramme installieren.
sed
Lösung und behandeln Sie Whitespace nicht speziell.