1) Tengo un archivo de registro llamado version.txt y necesito filtrar todas las palabras con la palabra clave "tomó? ms". El número antes de ms ("tomó?? ms") varía para cada entrada de registro.
La salida debe ser la siguiente:
took 4 ms
took 3 ms
took 4 ms
took 5 ms
2) También es posible enumerar las tomas > 100, es decir. debería enumerar los valores que sean más de 100. La salida debería ser como;
took 100 ms
took 110 ms
took 450 ms
Archivo de registro:
2020-03-11 06:19:29.857 INFO 29371 --- [ async-task-32] c.l.s.mapstore.InventoryPictureMapStore : InventoryPictureMapStore.store() called **took 4 ms** key: I,748518,00000,00000,595 Value: InventoryPicture [, sourcingEnabled=false, itemType=1, onHand_1=100, buffer_22=-1] writeToCassandra: true
2020-03-11 06:19:29.857 INFO 29371 --- [ async-task-10] c.l.s.mapstore.InventoryPictureMapStore : InventoryPictureMapStore.store() called **took 3 ms** key: I,26221,00000,00000,595 Value: InventoryPicture [, sourcingEnabled=false, itemType=1, onHand_1=-29, damaged_3=-1] writeToCassandra: true
2020-03-11 06:19:29.857 INFO 29371 --- [ async-task-13] c.l.s.mapstore.InventoryPictureMapStore : InventoryPictureMapStore.store() called **took 4 ms** key: I,960808,00000,00000,595 Value: InventoryPicture [, sourcingEnabled=false, itemType=1, onHand_1=14] writeToCassandra: true
2020-03-11 06:19:29.857 INFO 29371 --- [ async-task-30] c.l.s.mapstore.InventoryPictureMapStore : InventoryPictureMapStore.store() called **took 5 ms** key: I,771963,00000,00000,595 Value: InventoryPicture [, sourcingEnabled=false, itemType=1, onHand_1=64, buffer_22=-1] writeToCassandra: true
2020-03-11 06:19:29.857 INFO 29371 --- [ async-task-30] c.l.s.mapstore.InventoryPictureMapStore : InventoryPictureMapStore.store() called **took 100 ms** key: I,771963,00000,00000,595 Value: InventoryPicture [, sourcingEnabled=false, itemType=1, onHand_1=64, buffer_22=-1] writeToCassandra: true
2020-03-11 06:19:29.857 INFO 29371 --- [ async-task-30] c.l.s.mapstore.InventoryPictureMapStore : InventoryPictureMapStore.store() called **took 110 ms** key: I,771963,00000,00000,595 Value: InventoryPicture [, sourcingEnabled=false, itemType=1, onHand_1=64, buffer_22=-1] writeToCassandra: true
2020-03-11 06:19:29.857 INFO 29371 --- [ async-task-30] c.l.s.mapstore.InventoryPictureMapStore : InventoryPictureMapStore.store() called **took 400 ms** key: I,771963,00000,00000,595 Value: InventoryPicture [, sourcingEnabled=false, itemType=1, onHand_1=64, buffer_22=-1] writeToCassandra: true
Respuesta1
Esto puedes probar:
grep -oP "took [[:digit:]]{3,} ms" file
Producción:
took 100 ms
took 110 ms
took 400 ms
Gracias. ¿Es posible indicar también la fecha/hora? algo como esto como salida:
2020-03-11 06:19:29.857 tardó 100 ms
2020-03-11 06:19:29.857 tardó 110 ms
Suponiendo que todos los registros tienen el mismo formato, es más fácil con cut
y :sed
grep
cut -d' ' -f1,2,15-17 file | sed 's/*//g' | grep -P "took [[:digit:]]{3,} ms"
2020-03-11 06:19:29.857 took 100 ms
2020-03-11 06:19:29.857 took 110 ms
2020-03-11 06:19:29.857 took 400 ms
Respuesta2
Puedes hacer esto awk
usando esta manera:
awk -F '**' '{print $2}' input_file
PARA agregar hora y fecha puedes usar algo como:
awk -F '**' '{split($1,a," ");print a[1]" " a[2]" " $2}' input_file