Print events from two lines with a common identifier


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Print events from two lines with a common identifier
# 1  
Old 06-21-2013
Print events from two lines with a common identifier

Hi Unix Gurus,

I have a long text file, where alarms events are logged and alarm clear event are logged.

Both events alarm and alarm clear has common identifier as{xxxxxxxxxx}

I need to analyse the time-period for which the alarm sustained.

i.e

Output: timestamp from both event has been captured.
Code:
alarm;  pcm;     communications; major;  2013-06-21 03:23:00; 2013-06-21 03:23:03;    {1006905493};

Input File:
Code:
alarm;  pcm;     communications; major;  2013-06-21 03:23:00;     {1006905493};   '2.2.2.1-pcmBlock-X';
clearAlarm;     pcm;     communications; major;  2013-06-21 03:23:03;     {1006905493};   autoclear;
alarm;  pcm;     communications; major;  2013-06-21 03:23:04;     {1006905494};   '2.2.2.1-pcmBlock-X';
clearAlarm;     pcm;     communications; major;  2013-06-21 03:23:09;     {1006905494};   autoclear;

Thanks in advance..
# 2  
Old 06-21-2013
So, just to get the logic right first:-
  • You want to get the start record of an alarm and grab the first five fields
  • You want to append the clear-alarm record fields 5 & 6
If this is true, then it depends on the volume of data as to weather it is easier to write a shell script with greps or a more complex awk

You could:-
  • Get a list of all the common identifiers then use grep to get those records and blend them together.
  • Split the record into two files, strip out the fields you don't want then use paste

There are probably plenty of other ways too. What are your thoughts on this?



Robin
Liverpool/Blackburn
UK
# 3  
Old 06-21-2013
try..
Code:
 
 
awk -F";" '/^alarm/{split($5,A," ");
getline;
split($5,B," ");
split(A[2],C,":");
split(B[2],D,":");
E=(D[1]*60*60+D[2]*60+D[3])-(C[1]*60*60+C[2]*60+C[3]);
{if(E>59){print "Alarm ID"$6" clearded in "(E%3600)/60" minutes"}else{print "Alarm ID"$6" clearded in "E" seconds"}}}' filename


Last edited by vidyadhar85; 06-21-2013 at 06:38 AM..
This User Gave Thanks to vidyadhar85 For This Post:
# 4  
Old 06-21-2013
Quote:
Originally Posted by vidyadhar85
try..
Code:
 
 
awk -F";" '/^alarm/{split($5,A," ");
getline;
split($5,B," ");
split(A[2],C,":");
split(B[2],D,":");
E=(D[1]*60*60+D[2]*60+D[3])-(C[1]*60*60+C[2]*60+C[3]);
{if(E>59){print "Alarm ID"$6" clearded in "(E%3600)/60" minutes"}else{print "Alarm ID"$6" clearded in "E" seconds"}}}' filename

Thanks Man!! It worked like a rocket..perfect..!!
Made few changes to script i.e. added sort -t ';' -k6 {to sort the common identifier in order means alarm then corresponding clearAlarm else alarm and corresponding ClearAlarm are most of the times far in file, not next line}

How this script would react if a alarm is not clear i.e it does not have a clearAlarm event? What has to be modified in it..

Thanks for your support!!
This User Gave Thanks to vanand420 For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Compare two files and print based on common variable value.

Hi All, i have below two files. FILE: NAME="/dev/sda" TYPE="disk" SIZE="60G" OWNER="root" GROUP="disk" MODE="brw-rw----" PKNAME="" MOUNTPOINT="" NAME="/dev/sda1" TYPE="part" SIZE="500M" OWNER="root" GROUP="disk" MODE="brw-rw----" PKNAME="/dev/sda" MOUNTPOINT="/boot" NAME="/dev/sda2"... (3 Replies)
Discussion started by: balu1234
3 Replies

2. Shell Programming and Scripting

Sum column values based in common identifier in 1st column.

Hi, I have a table to be imported for R as matrix or data.frame but I first need to edit it because I've got several lines with the same identifier (1st column), so I want to sum the each column (2nd -nth) of each identifier (1st column) The input is for example, after sorted: K00001 1 1 4 3... (8 Replies)
Discussion started by: sargotrons
8 Replies

3. Shell Programming and Scripting

Find common numbers and print yes or no

Hi I have 2 files with following data First file, sp|Q676U5|A16L1_HUMAN, Autophagy-related protein 16-1 OS=Homo sapiens GN=ATG16L1 PE=1 SV=2, Maximum coiled-coil residue probability: 0.657 in position 163. Maximum dimeric residue probability: 0.288 in position 163. ... (1 Reply)
Discussion started by: manigrover
1 Replies

4. Shell Programming and Scripting

Common lines from files

Hello guys, I need a script to get the common lines from two files with a criteria that if the first two columns match then I keep the maximum value of the 5th column.(tab separated columns) . 3rd and 4th columns corresponds to the row which has highest value for the 5th column. Sample... (2 Replies)
Discussion started by: jaysean
2 Replies

5. Shell Programming and Scripting

print lines AFTER lines cointaining a regexp (or print every first and fourth line)

Hi all, This should be very easy but I can't figure it out... I have a file that looks like this: @SRR057408.1 FW8Y5CK02R652T length=34 AGCAGTGGTATCAACGCAGAGTAAGCAGTGGTAT +SRR057408.1 FW8Y5CK02R652T length=34 FIIHFF6666?=:88@@@BBD:::?@ABBAAA>8 @SRR057408.2 FW8Y5CK02TBMHV length=52... (1 Reply)
Discussion started by: kmkocot
1 Replies

6. Shell Programming and Scripting

Common lines from files

Hello guys, I need a script to get the common lines from two files with a criteria that if the first two columns match then I keep the maximum value of the 3rd column.(tab separated columns) Sample input: file1: 111 222 0.1 333 444 0.5 555 666 0.4 file 2: 111 222 0.7 555 666... (5 Replies)
Discussion started by: jaysean
5 Replies

7. UNIX for Advanced & Expert Users

how to take out common of two lines in a file

I use sed and awk. I am not a big expert but to some extent. I have file like this PFA0165c ctg_6843 PFA0335w ctg_6843 ctg_6871 ctg_6977 ctg_6654 ctg_7052 ctg_6899 ctg_6840 ctg_7202 ctg_6638 PFA0155c ctg_6877 ctg_7169 ctg_7179 ctg_6843 ctg_6871 Now I want output like... (6 Replies)
Discussion started by: jam_ali49
6 Replies

8. UNIX for Advanced & Expert Users

COMMON_ROOT=/files/common: is not an identifier

hi, i am getting this error while executing the script with cron:- COMMON_ROOT=/files/common: is not an identifier Manual run is ok, not getting any error. (2 Replies)
Discussion started by: nitinmoriwal
2 Replies
Login or Register to Ask a Question