Donc ouvrir un fichier avec cat
, puis utiliser grep
pour obtenir les lignes correspondantes ne me fait avancer que lorsque je travaille avec le jeu de journaux particulier que je traite. Il faut un moyen de faire correspondre les lignes à un motif, mais seulement de renvoyer la partie de la ligne après la correspondance. La partie avant et après le match variera de manière constante. J'ai joué avec using sed
ou awk
, mais je n'ai pas réussi à comprendre comment filtrer la ligne pour supprimer la partie avant le match ou simplement pour renvoyer la partie après le match, cela fonctionnera. Voici un exemple de ligne que je dois filtrer:
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 }
La partie dont j'ai besoin est tout après "bloquée".
Le contexte derrière ceci est que je peux savoir combien de fois quelque chose cale:
cat messages | grep stalled | wc -l
Ce que je dois faire est de savoir combien de fois un certain nœud a bloqué (indiqué par la partie précédant chaque signe deux-points après "bloqué". Si je ne fais que grep pour cela (c'est-à-dire 20 :), il peut renvoyer les lignes dont le logiciel échoue, mais pas de décrochage, ce qui ne m'aide pas. Je dois filtrer uniquement la partie bloquée afin de pouvoir ensuite rechercher un noeud spécifique parmi ceux qui sont bloqués.
À toutes fins pratiques, il s’agit d’un système freebsd avec les utilitaires standard GNU, mais je ne peux rien installer d’aide supplémentaire.
sed
solution et ne traitez pas les espaces en particulier.