Can I specify a default value to a variable in AWK like BASH in one statement using parameter substitution?
BASH example:
First, you have an extra dollar sign (shown in red above) that shouldn't be there.
Second: your default if empty string is misleading. With the form argument=${parm-word}, word is assigned only if parm is unset. If parm is set, but empty; argument will be set to the empty string.
To get what you probably intended (assign word if parm is set to an empty string or if parm is unset); you want:
Quote:
I know I can do:
Mike
If I understand what you're trying to do (assign an awk variable the value of a shell variable if it is set and not empty, the easy way is to still use shell variable assignment:
But, you can also do it entirely inside an awk script. Compare what happens with the following script:
which, with any POSIX conforming shell such as bash or ksh (it has been tested with both) produces the output:
If you want to try this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk.
This User Gave Thanks to Don Cragun For This Post:
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)