Extrae marcas de tiempo y encuentra la diferencia.

Extrae marcas de tiempo y encuentra la diferencia.

Tengo un gran conjunto de registros como se muestra a continuación:

June   5 15:51:56.606  [3997]:   TR#153. State machine - state = CC_STATE_IDLE, event = EVT_ISDN_SETUP
June   5 15:51:56.607  [3997]:   TR#153):  SC registration SUCCESS.
June   5 15:52:00.368  [3997]:   TR#153. DSP:4 Channel:26 Type: Modem State: Data 
June   5 15:52:01.837  [3997]:   TR#153. Receive transaction data: prot 1 data length: 159.-------------------->>
June   5 15:52:02.073  [3997]:   TR#153. Send transaction data: 55 <<-------------------
June   5 15:52:04.361  [3997]:   TR#153):Disconnect initated by 32 process.
June   5 15:52:57.382  [3997]:   TR#153. State machine - state = CC_STATE_IDLE, event = EVT_ISDN_SETUP
June   5 15:52:57.383  [3997]:   TR#153):  SC registration SUCCESS.
June   5 15:53:01.327  [3997]:   TR#153. DSP:4 Channel:26 Type: Modem State: Data 
June   5 15:53:04.291  [3997]:   TR#153. Receive transaction data: prot 1 data length: 347.-------------------->>
June   5 15:53:05.071  [3997]:   TR#153. Send transaction data: 103 <<-------------------
June   5 15:53:06.209  [3997]:   TR#153. Receive transaction data: prot 1 data length: 24.-------------------->>
June   5 15:53:07.239  [3997]:   TR#153):Disconnect initated by 32 process.

Me gustaría encontrar la diferencia horaria entre los eventos 'EVT_ISDN_SETUP' y 'Desconectar', esencialmente la duración de cada transacción. Para esto, primero necesito extraer la marca de tiempo de las líneas correspondientes y encontrar la diferencia. Probé el código Perlaquípara encontrar la diferencia para una instancia y funcionó bien. Mi tarea sería entonces obtener con éxito las marcas de tiempo entre los eventos interesados ​​y luego alimentar el código Perl e imprimir la diferencia junto con TR#ID.

¿Cómo lo hago?

Respuesta1

Supuesto: por cada línea que contiene EVT_ISDN_SETUPhay una línea que contiene Disconnectun patrón. Déjame pegarte el algoritmo:

  Get the time field for the line matching `EVT_ISDN_SETUP` pattern and put it to temp1 file
  Get the time field for the line matching `Disconnect`pattern and put it to another file say temp2.
  Using paste command put the content of both the files to another file say temp3.
  Read every line of the temp3 and pass first & 2nd field your perl script .

información relacionada