Not getting array in .awk file and print it


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Not getting array in .awk file and print it
# 1  
Old 05-20-2014
Not getting array in .awk file and print it

I have test.sh file as below :

Code:
set -A IDARR $ID
echo | awk -f test.awk -v TempArr="${IDARR[*]}"

I have test.awk file as below :

Code:
BEGIN {
Flag = 1;
}
{
 print "Hello";
 for(i in TempArr)
 {
  print i;
 }
}

Here script is running fine when I run like test.sh
but not getting output as
Hello and array values....

Please help me what is wrong in the script
# 2  
Old 05-20-2014
TempArr is just a variable inside awk, its not an array as you think and trying to iterate through for (i in arr) construct.

What does your $ID contains? May be you can get the array created inside awk itself.
This User Gave Thanks to clx For This Post:
# 3  
Old 05-20-2014
You need to split the TempArr variable into an awk Array, which then you can iterate through.
This User Gave Thanks to RudiC For This Post:
# 4  
Old 05-20-2014
As RudiC said you have to use split function

Here is example to start

Code:
$ bashArray=(10 20 30 4 50)

Code:
$ cat test.awk 
BEGIN{ 
          split(variable,awkArray); 
          for(i in awkArray)
          print "index="i,"Element="awkArray[i]
     }

Code:
$ awk -f test.awk -v variable="${bashArray[*]}"

Resulting
Code:
index=4 Element=4
index=5 Element=50
index=1 Element=10
index=2 Element=20
index=3 Element=30

This User Gave Thanks to Akshay Hegde For This Post:
# 5  
Old 05-21-2014
Thanks Akshay,

Whne I tried as below code, no is giving the 0 value and for that resion not getting any value from array. Please help me on this... Smilie
OUTPUT like :
0
After spliting

but not getting array elements...

Code:
        no = split(TempArr, Temp);
        print no;
        print "After spliting";
        for(i in Temp)
        {
                print Temp[i];
        }

# 6  
Old 05-21-2014
Quote:
Originally Posted by nes
Thanks Akshay,

Whne I tried as below code, no is giving the 0 value and for that resion not getting any value from array. Please help me on this... Smilie
OUTPUT like :
0
After spliting

but not getting array elements...

Code:
        no = split(TempArr, Temp);
        print no;
        print "After spliting";
        for(i in Temp)
        {
                print Temp[i];
        }

Please show your full code. if TempArr is awk variable, and not empty then it should work, before using split, put this print TempArr and check, whether variable is empty or not, if its prints nothing then what you are getting "0" is right. since variable has nothing to split.
# 7  
Old 05-23-2014
When I tried to print that values in test.sh file, I am getting 2 values from array

Code:
set -A IDARR $ID
echo "${IDARR[*]}"
echo | awk -f test.awk -v TempArr="${IDARR[*]}"

Getting out put as below :
3 1

Thanks in advance... Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to print array that occurs the most with matching value in another field

In the below awk I am splitting $7 on the : and then counting each line or NM_xxxx. If the $1 value is the same for each line then print the $7 that occurs the most with the matching $1 value. The awk seems close but I am not sure what is going on. I included a description as well as to what I... (1 Reply)
Discussion started by: cmccabe
1 Replies

2. Shell Programming and Scripting

Append awk results into file or array

for a in {1..100} do awk '{ sum+=$a} END {print sum}' a=$a file1 > file2 done I know I will get only one number if following the code above, how can I get 100 sum numbers in file2? (2 Replies)
Discussion started by: wanliushao
2 Replies

3. UNIX for Dummies Questions & Answers

How To Print Array in awk?

Hello, May i please know how do i print the array using awk script. I am using below shell script to start with but not working. #!/bin/bash LOADSTATUS="Line 0" LOADSTATUS="Line 1" LOADSTATUS="Line 2" LOADSTATUS="Line 3" LOADSTATUS="Line 4" awk ' BEGIN { Your File Load Status }... (1 Reply)
Discussion started by: Ariean
1 Replies

4. Shell Programming and Scripting

Awk: Print count for column in a file using awk

Hi, I have the following input in a file & need output as mentioned below(need counter of every occurance of field which is to be increased by 1). Input: 919143110065 919143110065 919143110052 918648846132 919143110012 918648873782 919143110152 919143110152 919143110152... (2 Replies)
Discussion started by: siramitsharma
2 Replies

5. Shell Programming and Scripting

Perl - use search keywords from array and search a file and print 3rd field when matched

Hi , I have been trying to write a perl script to do this job. But i am not able to achieve the desired result. Below is my code. my $current_value=12345; my @users=("bob","ben","tom","harry"); open DBLIST,"<","/var/tmp/DBinfo"; my @input = <DBLIST>; foreach (@users) { my... (11 Replies)
Discussion started by: chidori
11 Replies

6. Shell Programming and Scripting

Print array into a single file - AWK

Hi all, I been looking for a solution to the fact that when I use: for (i=1; i<=NF; i++) print $ifields that are originally in a single line are printed in a single line I have severals files for which the first 7 are the same, but the number of variables after that can vary, for example NF... (5 Replies)
Discussion started by: PaulaL
5 Replies

7. Shell Programming and Scripting

Print @array content to a file

Hi, as the title, I have an array @f_lines with gene information in it. How can I put the content of @f_lines into a file so that I can read it? I tried this: open(OUTPUT, "file"); # put gene information in this file; @f_lines = ("gene1", "gene2", "gene3"...); # gene information; print... (3 Replies)
Discussion started by: lyni2ULF
3 Replies

8. Shell Programming and Scripting

AWK separating a file into an array

Is there a way to have awk put successive records into an array in a bash script? I have files that say things like name :title :salary Bob :Instructor :30,000 Joyce :Instructor :30,000 Patrick :Manager :40,000 What I want to do is seperate this file into an array so that... (8 Replies)
Discussion started by: tgidzak
8 Replies

9. Shell Programming and Scripting

awk: reading into an array and then print the value corresponding to index

I am beginner in awk awk 'BEGIN{for(i=1;(getline<"opnoise")>0;i++) arr=$1}{print arr}' In the above script, opnoise is a file, I am reading it into an array and then printing the value corresponding to index 20. Well this is not my real objective, but I have posted this example to describe... (19 Replies)
Discussion started by: akshaykr2
19 Replies

10. Shell Programming and Scripting

saving values in file in an array in awk

hi i am trying to save values in a file in an array in awk..the file is as follows: 0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0, so far i have this: awk 'BEGIN {RS="\n";FS=","} { for(i=1;i<=NR;i++) { for(j=1;j<=NF;j++) { a=$j; } } (4 Replies)
Discussion started by: npatwardhan
4 Replies
Login or Register to Ask a Question