Post 2, I recognised that it worked (the reason I thanked the post).
Post 3, the second example you reposted is applicable to my script but I failed to understand it.
It appears that I did not appreciate the difference between how AWK ? operates from the BASH conditionals based on std error I am used to.
Mike
PS. Going back to thank post 3.
PPS. That example works for one part of my sciprt that does include truely null values. In another file I am working with, the column is never truely empty but it consists of double quoted emptyness, in which case I need to stick with the gsub.
PPS. I also was not aware that you could simultaneously do the assignement and test the assignment. I would have thought the required syntax was:
If you would just tell us the constraints under which you want to assign one of a group of values to a variable, we can probably help you construct a single command using one or more ternary expressions to get what you want. But just saying "I want to set a default value like bash does." doesn't really make sense. The awk utility doesn't have the concept of an "unset" scalar variable. (It does for elements of an array variable; but not for scalar variables.) And, in awk the empty string and the string "0" and the number 0 will be treated as identical in many awk expressions. But, if we know explicitly what you are trying to do we can differentiate between unset array elements, an empty string, and a 0 (although you can't differentiate a string 0 from a number 0 in awk). And, if you reference an array element (other than by using the in operator), you create that array element. For instance, if you split a line using:
and you want to set the variable v to "unset" if array[5] has not been set (i.e., split() returned a value less than 5), "empty" if a[5] is an empty string, "zero" if a[5] compares equal to 0 (such as with "0", "000", or "0.0"), and to the contents of a[5] for anything else you could use:
The command:
sets a to Default because the ternary operator evaluates the 1st expression (b in this case) and if that expression evaluates to TRUE returns the 2nd expression; otherwise it returns the 3rd expression. In awk a variable evaluates to TRUE if it is a non-zero string, a non-zero number, or a non-empty string; otherwise, it evaluates to FALSE.
Scalar variables in awk are never "unset" as in a shell variable that has never been set. In awk, every unset scalar variable has the value 0 if it is referenced as a numeric value and has the value empty string if referenced as a string.
for the command below, it looks for the 3rd field value matching "P" and printing it.
awk '{if ($3 == "P") print}' file
how would i express this if i use a loop to find more that 1 variable fro a list? this doesn't seem to work...
cat list | while read n
do
awk '{if ($3 == "$n") print}'... (1 Reply)
guys,
I'm trying to 9k lines of the following:
aaa aaa 1 1 1
to
aaa aaa 1 01 1
Im pretty ignorant when it comes to subtituting fields using awk
any help ?
Tony (1 Reply)
I need to copy field 2 to field 3 for only those records that have the 1st field equal to account
e.g. file
account|123|789|xxx|yyy|zzz|...
account_group|444|555|xxx|yy|zz|....
account|456|901|aaa|bbb|ccc|.....
after running awk script should look like
account|123|123|xxx|yyy|zzz|...... (4 Replies)
Hi again.
A have a CSV-file in the following format:
2008.09.01,15:17:42,9227096485,9233175320,CTC10,SMS,0901151742098314,Target_MSIS
DN_is_blacklisted
I want to have an awk command that will say:
If the first 3 digits of $4 does not begin with 922 or 923, then make $8 say "Invalid... (3 Replies)
Hello,
I have a file containing lines such as:
(1 104 (16) (17) (18) (102))$
(1 105 (16) (17) (19:21) (102))$
I would like to extract the numbers, only by using awk (or gawk).
I do not want to use "sed" as it is very slow.
For now my solution consists in... (2 Replies)
Hello,
in my .bashrc I tried to setup some aliases.
alias scp_cmd="scp -P 8888 $1 me@somehost:."
is supposed to copy a local file to somehost via scp. However it seems that the command line substitution does not work here. However this works:
alias lst="ls -l $1"
The above scp command can... (1 Reply)
I am trying to use AWK to replace dallinux02 to dallinux03 everywhere in the servers.txt file and move it over to "awk2".
Here is my script "awk2.awk":
gsub(/dallinux02/, "dallinux03"); print > "awk2"
I am trying to run this using the following:
$ awk -f awk2.awk... (3 Replies)
Hi experts
I want to use the parameter substitution in the bash with ## to get
a=mfs1000 (not the "mfs" maybe other string and the length is not the same"
I want to get
1000
any help? I don't know use which pattern
I use
echo ${a##*}
It doesn't work
Lei (5 Replies)
Hi all,
I need some help with substitution in awk.
Is it possible to substitute field from awk output with string from file?
For example:
zcat /SMS/CDR/cdr_TC/callLogs*_*_2013092710*.gz | sed 's/:/;/g' | awk -F";" '{if($2==1 && $10~/389123456789/) print $36";"$37}'
2;19733248
I want... (6 Replies)
I am trying add a prefix variable(string) to command output.
sed parameter substitution is not working.
- I have found some issues on my end of testing,, please delete this thread for now. (1 Reply)