If you thought that awk was going to perform the shell command substitutions when the awk printf statements are executed, you are wrong. The shell has to perform all four of those command substitutions to put together the parameters that will be passed to awk as the program awk is to evaluate. Furthermore, the shell break statements in all four of those command substitutions produce undefined results; break only has defined meaning inside a shell for, while, or until loop. If you are including this awk statement in the middle of a shell for, while, or until loop and hoping that the breaks in the command substitutions in the awk printf arguments will break out of that shell loop; that won't happen either. And, if that isn't enough, you don't have a valid awk program even if the command substitutions yielded syntactically correct awk printf statements; there is no closing '}' to match the '{' at the start of your awk BEGIN clause.
Even if you had a valid awk program and had valid command substitutions, assuming that the shell variables CRITICAL, CURRENTSTATE, and WARNING have been assigned integral values, it would be thousands of times faster (and MUCH easier to read and understand) if you would write this using shell if statements rather than invoking awk so you can use awk's < and >= operators (instead of using test's -lt and -ge primaries) and awk's more relaxed spacing requirements.
thank you. the shell if statements dont handle numbers like this "73.39", which is why i decided to use awk. its either awk or perl. and i personally dont like perl.
i'll retry with the closing brackets. dont know how i missed that. and by the way, yes, i am including this in a while loop. the original awk program i wrote didnt' have the breaks in it. but since it look like awk was running all four conditions instead of just one, i decided to put the break in there to try to force it break out of the first condition it matches.
Hello,
Can you explain why in the first 2 commands the awk does not print anything? Is it looking of a specific format ?
Thanks.
$ echo 12a3 | awk '($1>=2) {print $1}' # prints nothing
$ echo 123a | awk '($1>=2) {print $1}' # prints nothing
$ echo a123 | awk '($1>=2) {print $1}'
a123... (1 Reply)
how can i specify more than 1 consition in the following AWK statament??
i.e. if $2 is ABCD and $3 is MNOP and $4 is KLPM
similarly for OR
#!/bin/ksh
awk -F '' ' $2 == "ABCD" { print $2, $3;}' file.xml (2 Replies)
Hi,
Does any one know how to avoid the scenario where awk ignores the fields having only spaces or empty fields?
for instance,
Data: "a","b","c","d",""," "
code:
awk -F, '{ print NF }' File
the output I get is 4 instead of 6 do you know how to avoid this? (6 Replies)
Hi Everyone,
# cat 1
1;2;3;4;5;6
1;2;3;4;5;
# awk -F ";" '$5 == "5"' 1
1;2;3;4;5;6
1;2;3;4;5;
but the output is should be just "1;2;3;4;5;6" means 1st condition: $5 is 5; 2nd condition: $6 is not empty, please advice. Thanks (2 Replies)
Hi there, here is my command
ssh host.local "/path/to/my/perscript/hostconfig.pl -s $HOST -d |awk '{if (\$4 > 120)print \"My error message\";exit}{s=0; for (i=1; i<=NF; i++) s++; if(s == 13) print \$3}'"
The problem is if conditional 1 is met (i.e $4 > 120), i don't see "My error message", the... (5 Replies)
Hi All,
I have a file with below contents.
"en2"/10.185.81.0:cluster_interconnect,"en5"/10.185.81.0:cluster_interconnect,"en6"/169.181.146.0:public
I want to take the interface name from the file and convert it as ipaddress using ifconfig command get the output like below
en6 ->... (2 Replies)
I'm having a problem pulling UID's from data. The data outputs a user's UID in one of three ways:
1. Error User user_name already assigned with <UID>
2. Success <UID> reserved for user_name
3. <a load of crap because there was a db failure yet somehow the UID is still in there>
I typically... (5 Replies)
Hello Friends,
I need to find some CDRs in production servers whose 1st field value and 2nd field value = 1 and 11th looks like 45.123... where there are more than 3 digits after comma.so i wrote a one liner, something like below but does not work, however when i used first and second conditions... (8 Replies)
hello gurus,
I want to use an associative array from a file to populate a field of another file, by matching several columns in order of priority. If the first column matches, then i dont want to match $2. Similarly I only want to match $3 when $1 and $2 are not in associative array.
For the... (6 Replies)