Help to know the various possible uses of awk arrays


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Help to know the various possible uses of awk arrays
# 1  
Old 03-21-2011
Help to know the various possible uses of awk arrays

Hi to all,

I write this time to ask for different syntax or ways of arrays within awk and uses.

Since I don't know how actually could work and the real potencial of awk arrays, I look for a proactive reply/help in order to get
more information than it seems I'm trying to get.

I think I have seen before in threads in this forum, solutions with different syntax used to load arrays, obviously
depending on the input file and what you want to do with it, the uses and syntax might vary.

*I show below only examples rescued from what I think I've seen, so some may have incorrect syntax.


Code:
{a[$1]=$2}
{a[k++]=$1}
{a[++i]=$3}
{a[i]=$3++}
{a[i]=++$3}
{++a[i]=$3}
{a[$2]=+$3}
{a[$4]++}

Summary:
1-) It would be fine the person who respond, could say which of those examples above has correct syntax, the meaning of expression
and what others possible syntax exist when we want to load an array from input file.
2-) After that, I'll try to play around/evaluate different syntax you can shared(multi dimensional too, if it possible) and test to see their
output (learning of that) when I apply them to a sample file like I put below.
3-) If you want to share some examples with arrays with the below input file, it would be great and very appreciated
(difference/multiplication between fields, totals, etc)Smilie!!!.
Code:
Product    Entry    Price($)    Purchased    Sold
Laptops    2010-05-20    50    25    10
Desktop Computers    2010-12-07    40    20    7
Printers    2010-09-12    30    37    12
Optical Mouse    2011-02-07    12    71    39
Monitor    2010-12-03    20    44    15
Batteries    2011-01-15    20    80    41
Ac Adapters    2011-03-14    17    31    11
Memories    2010-07-19    15    93    53
Hard Drives    2011-01-13    35    17    5
Totals


PS. It is not about a homework, it's about doubts that I have regarding handling arrays in awkSmilie

Many thanks in advance,

Regards.

Last edited by cgkmal; 03-21-2011 at 07:16 PM..
# 2  
Old 03-22-2011
Arrays in awk arrays are associative, indexed with char string, key-value pairs.
Code:
{a[$1]=$2} -- you are including the column 2 in an array 'a' indexed by $1 field
{a[k++]=$1} -- k must be a variable and you are incrementing the index value while storing field 1 in the array 'a'
{a[++i]=$3} -- same as above
{a[i]=$3++} -- in the array 'a' indexed by the value of i, you are storing the value of field 3 incremented by 1
{a[i]=++$3} -- same as above but pre-incremented
{++a[i]=$3} -- not sure on this 
{a[$2]=+$3} -- shorthand notation of a[$2]= a[$2]+$3, adding the values of the array 'a; indexed by column 2 with the column 3
{a[$4]++} -- this allows you to check the unique values stored in the array 'a', indexing through the field 4

Please correct me if I am wrong !!

Last edited by royalibrahim; 03-23-2011 at 02:33 AM..
# 3  
Old 03-22-2011
Hi royalibrahim,

Many thanks for your reply. I'm more clear with your answer. I still need to practice and practice more to handle this well.

Thanks again.Smilie

If somebody more has more examples or comments would be great!


Regards
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using arrays with awk

I'm a little stuck and would be grateful of some advice! I have three files, two of which contain reference data that I want to add to a line of output in the third file. I can't seem to get awk to print array contents as I would expect. The input files are: # Input file AAA,OAA,0313... (2 Replies)
Discussion started by: maccas17
2 Replies

2. Shell Programming and Scripting

help in awk arrays!

Hi, buddies I am new to shell scripting and trying to solve a problem. I read about arrays in awk that they are quite powerful and are associative in nature. Awk Gurus Please help! I have a file: Id1 pp1 0t4 pp8 xy2 Id43 009y black Id6 red xy2 Id12 new pp1 black I have... (5 Replies)
Discussion started by: geli21
5 Replies

3. UNIX for Dummies Questions & Answers

awk arrays

Hi Can someone please explain the logic of awk arrays. I have been doing some reading but I dont understand this: #!/usr/bin/gawk -f { arr++; } end { for(i in arr) { print arr,i } } As I understand arr refs the arrays index, so while $2 is a string that cant... (2 Replies)
Discussion started by: chronics
2 Replies

4. Shell Programming and Scripting

arrays in awk

Hi, I have the following data in a file for example: Name="Fred","Bob","Peterson","Susan","Weseley" Age="24","30","28","23","45" Study="English","Engineering","Physics","Maths","Psychology" Code="0","0","1","1","0" Name="Fred2","Bob2","Peterson2","Susan2","Weseley2"... (14 Replies)
Discussion started by: james2009
14 Replies

5. Shell Programming and Scripting

awk arrays can do this better - but how?

Hi, I have spent the afternoon trawling Google, Unix.com and Unix in a Nutshell for information on how awk arrays work, and I'm not really getting too far. I ahve a batch of code that I am pretty sure can be better managed using awk, but I'm not sure how to use awk arrays to do what I'm... (1 Reply)
Discussion started by: littleIdiot
1 Replies

6. Shell Programming and Scripting

Arrays in awk

Hi, I've written the following code to manipulate the first 40 lines of a data file into my desired order: #!/bin/awk -f { if (NR<=(4)){ a=a$0" "} else { if ((NR >= (5)) && (NR <= (13))) { b=b$0" " } else {if ((NR >= (14)) && (NR <= (25))){ c=c$0" "} ... (5 Replies)
Discussion started by: catwoman
5 Replies

7. Shell Programming and Scripting

Need Help with awk and arrays

now its owkring - thanks fo rthe help all . (7 Replies)
Discussion started by: fusionX
7 Replies

8. Shell Programming and Scripting

awk arrays

Guys, OK so i have been trying figure this all all day, i guess its a pretty easy way to do it. Right, so i have to column of data which i have gotten from one huge piece of data. What i would like to do is to put both of these into one array using awk. Is this possible?? If so could... (1 Reply)
Discussion started by: imonthejazz
1 Replies

9. Shell Programming and Scripting

arrays in awk???

Been struggling with a problem, I have been trying to do this in awk, but am unable to figure this out, I think arrays have to be used, but unsure how to accomplish this. I have a input file that looks like this: 141;ny;y;g 789;ct;e;e 23;ny;n;u 45;nj;e;u 216;ny;y;u 7;ny;e;e 1456;ny;e;g... (3 Replies)
Discussion started by: craigsky
3 Replies

10. UNIX for Advanced & Expert Users

Two or more arrays in Awk

Hi All, I have been working on awk and arrays. I have this small script: cat maillog*|awk -F: '$2=="SMTP-Accept" && $5~/string/ {lastdate=substr($1,1,8); internaluser=$5; v++} END {for (j in v) {print lastdate, v, j}'| sort>> mail.list This gives me the number of mails users are getting. ... (1 Reply)
Discussion started by: nitin
1 Replies
Login or Register to Ask a Question