awk Pattern Matching for PING tests


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk Pattern Matching for PING tests
# 1  
Old 03-02-2018
awk Pattern Matching for PING tests

I have a script that logs into a server and pings several other servers in order to verify IP path between servers.

The output can look like this, if good pings:
Response from 1.1.1.4;_id=0, vlan_prio=0): seq=0 time=91.547 ms.
Response from 1.1.1.4;_id=0, vlan_prio=0): seq=1 time=61.176 ms.
Response from 1.1.1.4;_id=0, vlan_prio=0): seq=2 time=60.904 ms.

---- 1.1.1.4 ping statistics ----
3 packets sent, 3 responses received, 0% packet loss

or like so, if bad pings

Response from 1.1.1.4;_id=0, vlan_prio=0): seq=1 time=61.176 ms.

---- 1.1.1.4 ping statistics ----
3 packets sent, 1 responses received, 66% packet loss


I found a thread in this forum (now closed) that allowed for pattern matching on the "packet loss" and to print the previous line (so my log will show IP address as well as result, since this system doesn't include them on the same line.)

Code:
awk '/packet loss/{if (a && a !~ /packet loss/) print a; print} {a=$0}' log_ping.txt

(Thanks Marco!)Smilie

But I need an additional snippet in there somehow to EXCLUDE lines that show "0% packet loss"...i.e. only match on lines that show some kind of packet loss. Not 0% packet loss.

Thanks in advance!

Heather
# 2  
Old 03-02-2018
Code:
awk '/packet loss/ && $(NF - 2) !~ /^0%/ {if (a && a !~ /packet loss/) print a; print} {a=$0}' log_ping.txt


Last edited by rdrtx1; 03-02-2018 at 05:16 PM..
# 3  
Old 03-02-2018
That gives me 0 output.

I wonder if I try something that matches on "packet loss" but doesn't match on "3
responses received"?
# 4  
Old 03-02-2018
does awk '/packet loss/' log_ping.txt produce any output?
# 5  
Old 03-02-2018
I figured it out!

Code:
awk '/packet loss/ && !/, 0% packet loss/{if (a && a !~ /packet loss/) print a; print} {a=$0}' log_ping.txt

prints

Code:
---- 10.199.1.4 ping statistics ----
3 packets sent, 3 responses received,73% packet loss
---- 10.199.1.12 ping statistics ----
3 packets sent, 3 responses received, 85% packet loss
---- 10.199.1.13 ping statistics ----
3 packets sent, 3 responses received, 42% packet loss
---- 10.199.1.44 ping statistics ----
3 packets sent, 3 responses received, 56% packet loss
---- 68.30.186.4 ping statistics ----
3 packets sent, 0 responses received, 100% packet loss
---- 68.30.186.5 ping statistics ----
3 packets sent, 0 responses received, 100% packet loss
---- 68.30.186.20 ping statistics ----
3 packets sent, 0 responses received, 100% packet loss
---- 68.30.186.21 ping statistics ----
3 packets sent, 0 responses received, 100% packet loss

Thank you!

Last edited by rbatte1; 03-06-2018 at 05:56 AM.. Reason: Added CODE tags for output
# 6  
Old 03-02-2018
Most excellent!
# 7  
Old 03-02-2018
If you always want to print the double line, you should "embrace" both print statements. And, the double check on a might be overkill:

Code:
awk '/packet loss/ && !/, 0% packet loss/{if (a) {print a; print}} {a=$0}' log_ping.txt

or
Code:
awk '/packet loss/ && !/, 0% packet loss/ && a {print a; print} {a=$0}' log_ping.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk pattern matching

I have two files, want to compare file1 data with file2 second column and print line which are not matching. Need help in matching the pattern, file2 second column number can be leading 0 or 00 or 000. Example: file1 1 2 3 file2 a,0001 b,02 c,000 d,01 e,2 f,0005 Expected output:... (20 Replies)
Discussion started by: vegasluxor
20 Replies

2. Shell Programming and Scripting

Pattern matching using awk

Hi I am trying to find a pattern match with column one containing 3 numbers. input file tmp.lst abcd456|1|23123|123123|23423 kumadff|a|dadfadf|adfd|adfadfadf xxxd999|d|adfdfs|adfadf|adfdasfadf admin|a|dafdf|adfadfa||| output file tmp4.lst abcd456|1|23123|123123|23423... (3 Replies)
Discussion started by: vamsekumar
3 Replies

3. Shell Programming and Scripting

awk pattern matching

can somebody provide me with some ksh code that will return true if my the contents in my variable match anyone of these strings ORA|ERROR|SP2 variable="Error:ORA-01017: Invalid username/password; logon denied\nSP2-0640:Not connected" I tried this and it does not seem to work for me ... (3 Replies)
Discussion started by: BeefStu
3 Replies

4. Shell Programming and Scripting

AWK pattern matching on loop

Hi, I am still a beginner on shell scripting so please bear with me. What i am trying to do is filter my logfile based on some ID on field 24 which is defined in array. The filter result output will be moved to my log folder with the same name. The problem is when not using loop, this command... (2 Replies)
Discussion started by: howielim
2 Replies

5. UNIX for Dummies Questions & Answers

awk - pattern matching?

Hello all, I am trying to sort thru a database and print all the customers whose first names are only four characters. I just want to pull the first name only from the database. the database records appear like this in file: Mike Harrington:(510) 548-1278:250:100:175; first is name Mike... (4 Replies)
Discussion started by: citizencro
4 Replies

6. Shell Programming and Scripting

AWK:- matching pattern search

Dear Friends, I have a flat file. To pick certain details we have written an awk where we are facing difficulty. Sample of flat file. line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10 line 11 line 12 line 13 line 14 (Matching pattern "Lkm_i-lnr:"can be... (4 Replies)
Discussion started by: anushree.a
4 Replies

7. Shell Programming and Scripting

Awk -simple pattern matching

Find bumblebee and Megatron patterns (input2) in input1. If it is + read input1 patterns from Left to Right if it is - read input1 patterns from Right to Left Y= any letter (A/B/C/D) input1 c1 100 120 TF01_X1 + AABDDAAABDDBCADBDABC c2 100 120 TF02_X2 - AABDDAAABDDBCBACDBBC... (2 Replies)
Discussion started by: bumblebee_2010
2 Replies

8. Shell Programming and Scripting

AWK pattern matching

Hi, How can I tell awk to print all lines/columns if column number 5 contains the word Monday? I have tried nawk -F, '$5==Monday' OFS=, myfile > outputfile but that doesn't work (I am a newb!!) Thanks, (7 Replies)
Discussion started by: keenboy100
7 Replies

9. Shell Programming and Scripting

pattern matching using awk.

Dear Team, How do we match two patterns on the same line using awk?Are there any logical operators which i could use in awk like awk '\gokul && chennai\' <filename> Eg: Input file: gokul,10/11/1986,coimbatore. gokul,10/11/1986,bangalore. gokul,12/04/2008,chennai.... (2 Replies)
Discussion started by: gokulj
2 Replies

10. Shell Programming and Scripting

AWK pattern matching, first and last

In a nutshell, I need to work out how to return the last matching pattern from an awk //,// search. I can bring back the first, but am unsure how to obtain the last, and a simple tail won't work as the match could be over multiple lines. Secondly I would like some way of pattern matching, a... (10 Replies)
Discussion started by: smb_uk
10 Replies
Login or Register to Ask a Question