Hello
I have a text file with the next pattern
Name,Year,Grade1,Grade2,Grade3
Name,Year,Grade1,Grade2,Grade3
Name,Year,Grade1,Grade2,Grade3
I want to assign to external variables the grades using the awk method.
After i read the file line by line in order to get the grades i use this
grade1=echo $line | awk -F, '{ print $3 }'
grade2=echo $line | awk -F, '{ print $4 }'
grade3=echo $line | awk -F, '{ print $5 }'
Is there a way to assign values returned by awk to external variables from inside the awk command?
I know the next code wont work but something like this
echo $line | awk -F, '{ grade1= $3; grade2= $4; grade3= $5; }'
Thanks
yazu
June 19, 2011, 5:15am
2
No. But maybe you need something like this:
% cat testfile
Name,Year,Grade1,Grade2,Grade3
Name,Year,Grade1,Grade2,Grade3
Name,Year,Grade1,Grade2,Grade3
app@m11 ~/tmp
% cat testfile | tr ',' ' ' | while read name year grade1 grade2 grade3
do
echo $grade1
echo $grade2
echo $grade3
done
Grade1
Grade2
Grade3
Grade1
Grade2
Grade3
Grade1
Grade2
Grade3
Scott
June 19, 2011, 6:32am
3
Of course, as your input contains three grades per line, you might want to store all of them in one go.
$ cat SomeScript
unset grade1 grade2 grade3
while IFS=, read name year g1 g2 g3; do
grade1[${#grade1[@]}]="$g1"
grade2[${#grade2[@]}]="$g2"
grade3[${#grade3[@]}]="$g3"
done < inputfile
echo "First Grade 1:"
echo ${grade1[0]}
echo "Second Grade 2:"
echo ${grade2[1]}
echo "All Grade 3's:"
echo ${grade3[@]}
$ ./SomeScript
First Grade 1:
Grade1
Second Grade 2:
Grade2
All Grade 3's:
Grade3 Grade3 Grade3