How to extract only values greater than a threshold

awkgreplogs

I am new to bash scripting. Could someone help me with the following?
I have a log file with output as shown below.

I'm trying to grep for lines of an output with logDurationMillis>=950ms

logAlias:Overall,logDurationMillis:382,logTimeStart:2019-07-24_15:30:06.075,logTimeStop:2019-07-24_15:30:06.107
logAlias:Overall,logDurationMillis:388,logTimeStart:2019-07-24_15:30:06.406,logTimeStop:2019-07-24_15:30:06.444
logAlias:Overall,logDurationMillis:545,logTimeStart:2019-07-24_15:30:06.583,logTimeStop:2019-07-24_15:30:06.638
logAlias:Overall,logDurationMillis:961,logTimeStart:2019-07-24_15:30:06.599,logTimeStop:2019-07-24_15:30:06.660
logAlias:Overall,logDurationMillis:640,logTimeStart:2019-07-24_15:30:07.197,logTimeStop:2019-07-24_15:30:07.237
logAlias:Overall,logDurationMillis:934,logTimeStart:2019-07-24_15:30:07.474,logTimeStop:2019-07-24_15:30:07.508
logAlias:Overall,logDurationMillis:336,logTimeStart:2019-07-24_15:30:07.546,logTimeStop:2019-07-24_15:30:07.582

The values are always in the second comma-delimited column.

Best Answer

With awk:

  1. if you know "logDurationMillis" is the second item:

    awk -F'[:,]' -v limit=950 '$4 >= limit' file
    
  2. otherwise

    awk -F'[:,]' -v limit=950 '{
        for (i=1; i<NF; i+=2) 
            if ($i == "logDurationMillis" && $(i+1) >= limit) 
                print
    }' file
    
Related Question