awk script to match string and print status


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers awk script to match string and print status
# 8  
Old 02-16-2020
Quote:
Originally Posted by shanul karim
I tried but still same result...
.
.
.
A bit difficult to believe. What's your input data?
# 9  
Old 02-16-2020
Here is the sample.txt input file

Code:
LOTC cluster state:
-------------------
Node safNode=SC_2_1 joined cluster | Wed Dec 5 17:03:36 2018
Node safNode=SC_2_2 joined cluster | Wed Dec 5 17:03:36 2018
Node safNode=PL_2_3 joined cluster | Wed Dec 5 17:04:34 2018

AMF cluster state:
------------------
saAmfNodeAdminState."safAmfNode=SC-1,safAmfCluster=myAmfCluster": Unlocked
saAmfNodeOperState."safAmfNode=SC-1,safAmfCluster=myAmfCluster": Enabled
saAmfNodeAdminState."safAmfNode=SC-2,safAmfCluster=myAmfCluster": locked
saAmfNodeOperState."safAmfNode=SC-1,safAmfCluster=myAmfCluster": Enabled

# 10  
Old 02-16-2020
Looks like your result in post #7 is EXACTLY what you wanted...
This User Gave Thanks to RudiC For This Post:
# 11  
Old 02-16-2020
Really thankful to you guys..
If possible just explain your code..
# 12  
Old 02-16-2020
It does the same as your code does, except once a line failed, you don't need to check further. That's what the OK array, indexed by the respective cluster state, is for. Same logic as before for the "AMF" state. If no line failed the test, OK[...] will stay 1 , and will print in the END section accordingly.
# 13  
Old 02-17-2020
Dear RudC,

Thanks for explanation.
The Issue is now that when AMF status " Enabled and Unlocked". To me still output is AMF status is not ok.
Can you share how in your case it came as ok. Sorry to bothering you too much.
While status "Disabled and locked" it came as not ok that is correct.

Code:
$ awk '
>
> /cluster state:/        {print $1, $2
>                          OK[$1] = 1
>                          getline
>                          next
>                         }
>
> /^Node/ && OK["LOTC"]   {if ($3 != "joined")    {print "LOTC cluster state is not ok"
>                                                  OK["LOTC"] = 0
>                                                 }
>                         }
> OK["AMF"]               {if ("UNLOCKED ENABLED" !~ " " toupper($NF) " ") {print "AMF cluster state: is not ok"
>                                                                             OK["AMF"] = 0
>                                                                            }
>                         }
> END                     {for (o in OK) if (OK[o]) print o, " cluster state is ok"
>                         }
> ' sample.txt
LOTC cluster
AMF cluster
AMF cluster state: is not ok
LOTC  cluster state is ok

eshaqur@SA-00001256 ~
$ cat sample.txt
LOTC cluster state:
-------------------
Node safNode=SC_2_1 joined cluster | Wed Dec 5 17:03:36 2018
Node safNode=SC_2_2 joined cluster | Wed Dec 5 17:03:36 2018
Node safNode=PL_2_3 joined cluster | Wed Dec 5 17:04:34 2018

AMF cluster state:
------------------
saAmfNodeAdminState."safAmfNode=SC-1,safAmfCluster=myAmfCluster": Unlocked
saAmfNodeOperState."safAmfNode=SC-1,safAmfCluster=myAmfCluster": Enabled
saAmfNodeAdminState."safAmfNode=SC-2,safAmfCluster=myAmfCluster": Unlocked
saAmfNodeOperState."safAmfNode=SC-1,safAmfCluster=myAmfCluster": Enabled

# 14  
Old 02-17-2020
You need to copy the spaces araound " UNLOCKED ENABLED " as well (c.f. post #6).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Search strings from a file in files in a directory recursively; then print the string with a status

Hi All, I hope somebody would be able to help me. I would need to search a string coming from a file, example file.txt: dog cat goat horse fish For every string, I would need to know if there are any files inside a directory(recursively) that contains the string regardless of case.... (9 Replies)
Discussion started by: kokoro
9 Replies

2. Shell Programming and Scripting

awk to print match or non-match and select fields/patterns for non-matches

In the awk below I am trying to output those lines that Match between file1 and file2, those Missing in file1, and those missing in file2. Using each $1,$2,$4,$5 value as a key to match on, that is if those 4 fields are found in both files the match, but if those 4 fields are not found then missing... (0 Replies)
Discussion started by: cmccabe
0 Replies

3. Shell Programming and Scripting

Match string from two files and print line

Hi, I have been trying to find help with my issue and I'm thinking awk may be able to do it. I have two files eg file1.txt STRING1 230 400 0.36 STRING2 400 230 -0.13 STRING3 130 349 1 file2.txt CUFFFLINKS 1 1394 93932 . + STRING1 CUFFFLINKS ... (9 Replies)
Discussion started by: zward
9 Replies

4. Shell Programming and Scripting

awk script to match and print

I need a script that will search for a string from column 1 in file A and when the string matches the last column in file B, print columns 1, 2 (file A) and columns 2, 3 (file B). input file A stringtomatch1 a stringtomatch2 a stringtomatch3 b file B junkcolumn1 printcolumn2... (4 Replies)
Discussion started by: ncwxpanther
4 Replies

5. Shell Programming and Scripting

Print string after the word match

Hi, I have the logs : cat logsx.txt 744906,{"reportingGroups":,"version":"2.0"} 678874,{"reportingGroups":,"version":"2.0"} 193571,{"reportingGroups":,"version":"2.0"} 811537,{"reportingGroups":,"version":"2.0"} 772024,{"reportingGroups":,"version":"2.0"}... (5 Replies)
Discussion started by: justbow
5 Replies

6. Shell Programming and Scripting

Print lines that match regex on xth string

Hello, I need an awk command to print only the lines that match regex on xth field from file. For example if I use this command awk -F"|" ' $22 == "20130117090000.*" 'It wont work, I think, because single quotes wont allow the usage of the metacharacter star * . On the other hand I dont know... (2 Replies)
Discussion started by: black_fender
2 Replies

7. Shell Programming and Scripting

How to print everything after a string match

Hi all, I'm trying to do some work on the authorized_keys file to do a check if there's any information after the hash key.. At the end of the hash key's in the file, there can be an = or == Is there a way to check if anything exists after these equals and if so print it out or else print... (2 Replies)
Discussion started by: Jazmania
2 Replies

8. Shell Programming and Scripting

awk to print lines based on string match on another line and condition

Hi folks, I have a text file that I need to parse, and I cant figure it out. The source is a report breaking down softwares from various companies with some basic info about them (see source snippet below). Ultimately what I want is an excel sheet with only Adobe and Microsoft software name and... (5 Replies)
Discussion started by: rowie718
5 Replies

9. Shell Programming and Scripting

exact string match ; search and print match

I am trying to match a pattern exactly in a shell script. I have tried two methods awk '/\<mpath${CURR_MP}\>/{print $1 $2}' multipath perl -ne '/\bmpath${CURR_MP}\b/ and print' /var/tmp/multipath Both these methods require that I use the escape character. I am guessing that is why... (8 Replies)
Discussion started by: bash_in_my_head
8 Replies

10. Shell Programming and Scripting

How to print exit status in AWK

Hi all, How can I print the exit status in AWK? echo $? doesnt work for me Thanks (4 Replies)
Discussion started by: Pauline mugisha
4 Replies
Login or Register to Ask a Question