Shell Script - awk, begin, for and print

Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Shell Script - awk, begin, for and print

Code:
pointsb=`awk -v a2="$a2" -v b2="$b2" -v c2="$c2" -v yb="$yb" -v yc="$yc" \
	'BEGIN { for (y=yc; y<=yb; y++) { x = a2*y*y+b2*y+c2; print x, y }; }'`

I am learning shell script. I was reading a script and got confused in this line.
I understood that awk is allowing to assign the variable.

But I don't know how this line working.
Can anyone explain it, please?
# 2  
The BEGIN section is a section of code awk reads before it reads any files.

It is not running shell code, which is why it looks so different, it's running awk code, it's its own language.

Code:
for (y=yc; y<=yb; y++) { x = a2*y*y+b2*y+c2; print x, y };

If yc=0 and yb=4, it loops 5 times, with y=0, y=1, y=2, y=3, y=4, y=5, following the mathematical formula given to calculate new results for x, then prints the coordinates.
# 3  
What is the job print x,y here?

and assuming that x becomes 25 at the end of the loop, what will be the value of pointsb
# 4  
pointsb will hold all the x-y coordinates of this inverse parabola, as printed out by print x,y, separated by <newline> chars.
# 5  
Code:
pointsb=`awk -v a2="$a2" -v b2="$b2" -v c2="$c2" -v yb="$yb" -v yc="$yc" \
	'BEGIN { for (y=yc; y<=yb; y++) { x = a2*y*y+b2*y+c2; print x, y }; }'`

can write it like this?
Code:
pointsb = ""
for (y=yc; y<=yb; y++) { 
    x = a2*y*y+b2*y+c2; 
    pointsb = "$pointsb $x $y "
}

# 6  
No - your mixing up shell and awk, a program.
pointsb is a shell variable. The `...` is the old, deprecated form of command substitution. awk is the program being called, the -v...s are awk-variable-definitions used to transfer shell variables to awk variables, the literal string '...' is an awk script, and finally the awk output is being assigned to pointsb.
# 7  
Quote:
Originally Posted by RudiC
No - your mixing up shell and awk, a program.
pointsb is a shell variable. The `...` is the old, deprecated form of command substitution. awk is the program being called, the -v...s are awk-variable-definitions used to transfer shell variables to awk variables, the literal string '...' is an awk script, and finally the awk output is being assigned to pointsb.
Is it not possible to write the line of code without awk then?
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
Need awk or Shell script to compare Column-1 of two different CSV files and print if column-1 matche
TestPractice
Example: I have files in below format file 1: zxc,133,joe@example.com cst,222,xyz@example1.com File 2 Contains: hxd hcd jws zxc cst File 1 has 50000 lines and file 2 has around 30000 lines : Expected Output has to be : hxd hcd jws... Shell Programming and Scripting
5
Shell Programming and Scripting
How to print backslash in shell script using awk?
wxuyec
I found that echo "aaa" | awk '{print ",\\";}' works, and it will give "\". but ddd=`echo "aaa" | awk '{print ",\\";}'`; echo $ddd will not work. Could anyone tell me why? thank you.... Shell Programming and Scripting
8
Shell Programming and Scripting
strange: sed and awk print at end instead of begin of line
regisl67
Hi! I have a strange behaviour from sed and awk, but I'm not sure, if I'm doing something wrong: I have a list of words, where I want to add the following string at the end of each line: \;\;\;\;0\;1 I try like this: $ cat myfile | awk '{if ( $0 != "" ) print $0"\;\;\;\;0\;1"}' Result:...... Shell Programming and Scripting
5
Shell Programming and Scripting
awk/shell script to print each line to a file
saint2006
Dear People, My query is: have a file, which looks likes this: 10 20 30 40 50 1 2 3 4 5 100 200 300 400 500 what i need is: "PRINT EACH LINE TO AN UNIQUE FILE" desired output: file 1 10 20 30 40 50 file 2 1 2 3 4 5... Shell Programming and Scripting
3
Shell Programming and Scripting
shell script(Preferably awk or sed) to print selected number of columns from each row
ks_reddy
Hi Experts, The question may look very silly by seeing the title, but please have a look at it clearly. I have a text file where the first 5 columns in each row were supposed to be attributes of a sample(like sample name, number, status etc) and the next 25 columns are parameters on which...... Shell Programming and Scripting
3
Shell Programming and Scripting