Conditional pattern recognition with awk


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Conditional pattern recognition with awk
# 1  
Old 09-16-2016
Conditional pattern recognition with awk

Hi, I would need some help extracting the desired data from the following text:

Code:
# Time_result: 1.056179  next_value: 0.000077 
OTHER VALUE 445552341;
SELECT row with values
# IP = 192.168.1.15
# Time: 45
# Time_result: 100.15  next_value: 0.000077 
OTHER VALUE 445552341;
SELECT row with values
   value 1 
   value 2
      other value 1
# some row
# Time_result: 50.35  next_value: 0.000077 
SELECT some new values
# IP new 10.150.2.15
# Time_result: 52.15  next_value: 0.000077 
OTHER VALUE 445552341;
SELECT row with values
   value 1 
# some row

The logic behind is:
if "# Time_result: 1.056179 " is higher than 50 ("# Time_result: > 50 ") print all rows from SELECT to the first #.

Desired result:

Code:
SELECT row with values
   value 1 
   value 2
      other value 1
SELECT some new values
SELECT row with values
   value 1

What I've been able to figure out so far is :
Code:
awk '/^#/{flag=0}flag;/^SELECT/{print ;flag=1}' file

I only need to add the condition for # Time_result:
Thank you in advance!

Last edited by alex2005; 09-16-2016 at 05:05 PM..
# 2  
Old 09-16-2016
Try:-
Code:
awk '
        /Time_result/ && $3 > 50 {
                t_flag = 1
                next
        }
        /SELECT/ {
                s_flag = 1
        }
        /^#/ && s_flag {
                s_flag = 0
        }
        t_flag && s_flag
' file

This User Gave Thanks to Yoda For This Post:
# 3  
Old 09-16-2016
Thank you for your answer.
Is correct assuming the one liner will look like this:
Code:
 awk '/Time_result/ && $3 > 50 { t_flag = 1 ; next } /SELECT/ { s_flag = 1 } /^#/ && s_flag { s_flag = 0 } t_flag && s_flag' file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multi-conditional IF - awk

I have a 6 column array with 2 million rows that looks like this: 1 1089699 rs6686003 G A g 1 1090557 rs7553429 A C c 1 1094738 rs4970362 A G a 1 1099342 rs9660710 A C c 1 1106473 rs4970420 G A a 1 1108637 rs4970421 G A g 1 1119858 rs1320565 C T c 1... (5 Replies)
Discussion started by: Geneanalyst
5 Replies

2. UNIX for Beginners Questions & Answers

Conditional Arithmetic in [g]awk

I am having a difficult time getting an awk one-liner to work correctly that runs a mathematical operation upon values in a field when matching a given criteria. I would like to subtract 1 from every value in field $6 that is greater than 12. In this particular case it is only a constant of... (3 Replies)
Discussion started by: jvoot
3 Replies

3. Shell Programming and Scripting

[awk] conditional printing

Heya I'm trying to get to know awk a bit better. So i'm trying to get used to calls saving me a grep invocation just to get a specific part of a single line. This said, i want to get the current screen resolution according to xrandr's output. Screen 0: minimum 8 x 8, current 1920 x 1080,... (1 Reply)
Discussion started by: sea
1 Replies

4. Shell Programming and Scripting

Conditional awk

Hello All, I have a file like this: bash-3.00$ cat 1.txt 201112091147|0|1359331220|1025 201112091147|0|1359331088|1024 201112091144|0|1359331172|1025 201112091147|0|1359331220|1021 201112091149|0|1359331088|1027 201112091144|0|1359331172|1029 and a list of MSISDNs in another file... (9 Replies)
Discussion started by: EAGL€
9 Replies

5. Shell Programming and Scripting

conditional statement in awk

Hi all, I have a file containing the values that would be use as the basis for printing the lines of another set of files using awk. What I want to do is something like the one below: stdev.txt 0.21 0.42 0.32 0.25 0.15 file1.txt file2.txt file3.txt ..filen.txt 0.45 0.23 ... (4 Replies)
Discussion started by: ida1215
4 Replies

6. Shell Programming and Scripting

AWK conditional addition

I have a column of numbers $2, I would like to add 360 to all numbers that are negative. This method seems a bit convoluted, and does not work (outputs 0): BEGIN { A=sprintf("%d", $2); if(A<0) A=A+360; BIN++; } END { for(A in BIN) print... (5 Replies)
Discussion started by: chrisjorg
5 Replies

7. Shell Programming and Scripting

Awk Conditional

Hi Guys, i have this files: xyz20080716.log opqrs20080716.log abcdef20080716.log xyz20080717.log oprs20080717.log abcde20080717.log currentdate: 20080717.log I want to make script to zip the file for past day. Can anyone help for this? i've just learn awk scripting & still confused with... (3 Replies)
Discussion started by: icy_blu_blu
3 Replies

8. Shell Programming and Scripting

AWK - conditional cause

Hello guys, I want to make a conditional cause in the following file using awk: awk '{ if ($2 != 0) print $1, $2, $3}' test.csv > test2.csv FILE EXAMPLE = test.csv string,number,date abc,0,20050101 def,1,20060101 ghi,2,20040101 jkl,12,20090101 mno,123,20020101 ... (2 Replies)
Discussion started by: Rafael.Buria
2 Replies

9. UNIX for Dummies Questions & Answers

Pattern Recognition - perl

can someone help me with this.. cant for the life of me figure it out.. =~ m!^(/.*)/bin/xx! specific query > What does m!^ do > What does the ! at the end do.. (3 Replies)
Discussion started by: scorreg
3 Replies

10. Shell Programming and Scripting

awk conditional statement

how can i use awk or sed to do a conditional statement, so that HH:MM if MM not great than 30 , then MM=00 else MM=30 ie: 10:34 will display 10:30 10:29 will display 10:00 a=$(echo 10:34 | awk ......) Thanks in advance (10 Replies)
Discussion started by: 3Gmobile
10 Replies
Login or Register to Ask a Question