Any Idea how to achieve the same?
awk ' { { split($i, keyVal, "@") key=keyVal[1]; val=keyVal[2]; if(val ~ /^ *$/) val="Y"; } } ' File
I have tried with
1) if(val == "") 2) if(val ~ /^ *$/)
not working in both cases.
In awk, $0 is the whole line of arguments, whereas $1 is just the first argument in a list of arguments separated by spaces.
The comparison with ""
should have worked, so that's a bit odd
As one more alternative, you could use the length()
function, if zero, your variable is null/empty. E.g.,
if (length(val) == 0)
Also, perhaps the built-in variable NF
(number of fields) could come in handy? Since we don't have access to your input data it's hard to say though, but another possibility.
You can directly use the variable without comparison, an empty/null/zero value is considered false
, everything else is true
.
See here :
# setting default tag if not provided if (! tag) { tag="default-tag" }
So this script will have the variable tag
with the value default-tag
except if the user call it like this :
$ awk -v tag=custom-tag -f script.awk targetFile
This is true as of : GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With