Entonces, abrir un archivo con cat
y luego usarlo grep
para obtener líneas coincidentes solo me lleva muy lejos cuando estoy trabajando con el conjunto de registros particular con el que estoy tratando. Necesita una forma de hacer coincidir las líneas con un patrón, pero solo para devolver la parte de la línea después de la coincidencia. La porción antes y después del partido variará constantemente. He jugado con sed
o awk
, pero no he podido descubrir cómo filtrar la línea para eliminar la parte antes del partido, o simplemente devolver la parte después del partido, funcionará. Este es un ejemplo de una línea que necesito filtrar:
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 porción que necesito es todo después de "estancado".
El trasfondo detrás de esto es que puedo descubrir con qué frecuencia algo se detiene:
cat messages | grep stalled | wc -l
Lo que necesito hacer es averiguar cuántas veces se ha estancado un determinado nodo (indicado por la parte antes de cada dos puntos después de "estancado"). no hay paradas, lo que no me ayuda. Necesito filtrar solo la parte detenida para poder buscar un nodo específico de los que se han estancado.
Para todos los efectos, este es un sistema freebsd con utilidades centrales GNU estándar, pero no puedo instalar nada extra para ayudar.
sed
solución y no trate los espacios en blanco especialmente.