awk arrays - compare value in second column to variable


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
awk arrays - compare value in second column to variable

Hello,

I am trying to redirect files to a directory by using a config file. The config files is as such:

Code:
xxxxxx,ID,PathToDirectory
xxxxxx,ID2,PathToDirectory2

and so on...

I have a variable that should match one of these IDs. I want to load this config file into an awk array, and then parse trhough it to find the record and then use the PathToDirectory to copy my file to it.

This is what I have:

Code:
awk -v ak2=$AK202 -F "," '{  configfile[NR] = $0   }
                  END { for(i = 1; i <= NR; i++) { if (configfile[i]=ak2) print configfile[i]  }  } ' $INPUTFILE

Any thoughts? My idea is to fill the array, and then compare my AK202 variable to the second column, store the third as the destination directory.

Regards!

Last edited by radoulov; 04-09-2012 at 04:53 PM.. Reason: Code tags!
# 2  
Code:
echo "xxxxxx,10,pth1 xxxxxx,11,pth2 xxxxxx,12,pth3" | tr ' ' '\n' | awk 'BEGIN {FS=","} { if ($2 == 11) { A[5]=$3; print A[5] } } '

produces

Code:
pth2

# 3  
Hi, one of the niceties of awk is that it knows associative arrays. This means that you are not limited to the use of integers to use as an index.. So instead of NR you can use $2 as the index, which would save you a loop. But in addition, in this case you do not even need an array, since you can evaluate straight away, while processing the lines..
Code:
awk -v ak2="$AK202" -F, '$2==ak2' "$INPUTFILE"

is all it takes. This solution would be more efficient:
Code:
awk -v ak2="$AK202" -F, '$2==ak2{print; exit}' "$INPUTFILE"

You can also use print $3 instead of print to only print the third field.
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #582
Difficulty: Medium
A buffered input or output stream is one in which data that is read or written is actually stored in memory in a buffer until such a time as the buffer is flushed and the accumulated data is passed to or from the actual file.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk sum of 2 arrays and compare

i'm new to awk, and i've been searching on the forum for sum of a column but all the scripts does sum a column of an entire file. I've a file like this: cat file.txt 1234 5678 5678 1234 I want to use awk to do sum of each column per line not entire file, compare the two then write the... (1 Reply)
Discussion started by: chofred
1 Replies

2. Shell Programming and Scripting

Need awk or Shell script to compare Column-1 of two different CSV files and print if column-1 matche

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 (5 Replies)
Discussion started by: TestPractice
5 Replies

3. Shell Programming and Scripting

How to compare two column using awk?

Hi team, I have below sample file. It has 4 columns. I want awk script to compare column2 and column4 row by row and print result in new column5 If value matches then result should be MATCHED if not then result should be NOT MATCHED Input file as below UDC_MSISDN,UDC_NPREFIX... (9 Replies)
Discussion started by: shanul karim
9 Replies

4. Shell Programming and Scripting

Compare multiple arrays elements using awk

I need your help to discover missing elements for each box. In theory each box should have 4 items: ITEM01, ITEM02, ITEM08, and ITEM10. Some boxes either have a missing item (BOX02 ITEM08) or might have da duplicate item (BOX03 ITEM02) and missing another one (BOX03 ITEM01). file01.txt ... (2 Replies)
Discussion started by: alex2005
2 Replies

5. Shell Programming and Scripting

Pass column number as variable to awk and compare with a string.

Hi All, I have a file test.txt. Content of test.txt : 1 vinay se 2 kumar sse 4 kishore tl I am extracting the content of file with below command. awk '$2 ~ "vinay" {print $0}' test.txt Now instead of hardcoding $2 is there any way pass $2 as variable and compare with a... (7 Replies)
Discussion started by: Girish19
7 Replies

6. Shell Programming and Scripting

Compare the second column of a file with the second column of another in awk

Hi, I know that this topic has been discussed in the past and I've tried to follow all the guidelines. Anyhow, I following describe my problem. I have a file (file1 , no. records = 67) containing pairs of IP addresses as follows (with single space as delimiter between the fields): example... (5 Replies)
Discussion started by: amarn
5 Replies

7. Shell Programming and Scripting

Take values from a column and put it in a variable and compare

Hi, I have a table in unix from which i want to read the contents line by line, then filter out the values from 6th column one by one and compare it a fixed value. How to do this? (7 Replies)
Discussion started by: arijitsaha
7 Replies

8. Shell Programming and Scripting

Compare strings between 2 arrays and print number in AWK

Hi to everyone, Please some help over here. Hi have array a with 6 elements and array b with 3 elements as shown inside BEGIN{} statement. I need help to get the correct sintax (the part in red) to compare if string from array b is in array a and print the number related for each match.... (3 Replies)
Discussion started by: Ophiuchus
3 Replies

9. Shell Programming and Scripting

Compare a content of variable to a database column

Hi have an array like this colarray="a" colarray="b" colarray="c" colarray="d" colarray="e" colarray="f" the arrayvariable is in unix sh file i want to check the content of the array to oracle database table. that is whether "a" is present in the table. (4 Replies)
Discussion started by: barani75
4 Replies

10. Shell Programming and Scripting

awk column compare

I've been banging my head against the wall to accomplish the following. Given two files: File a.txt 12345 hello 32324 there File b.txt 12345 stuff 45454 howdy 32324 joe If column 1 matches between the two files, then print only the entire line of the 2nd file (b.txt in this... (3 Replies)
Discussion started by: tiggyboo
3 Replies

Featured Tech Videos