comparing variables in awk array


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting comparing variables in awk array
# 1  
Old 07-28-2009
comparing variables in awk array

Hi,

I am trying to sort and display the below(like) input using awk command:


Input:
------
0;A
4;A
5;A
33;A
45;A
0;B
4;B
5;B
33;B
45;B


Output (desired):
-------

A 0;4;5;33;45
B 0;4;5;33;45

I am using awk -F\; 'END { for (k in arr) print k FS arr[k] }{ arr[$2] = arr[$2] ? arr[$2] FS $1 : $1 }' file name to get the output. the output which i get after runnin this command is

A ;4;5;33;45 -- '0' is missing
B ;4;5;33;45 -- '0' is missing

i think awk is not displaying 0 for the first time when it compares it with the next element in the array.

Can any one of you help me out to find the solution for this.
# 2  
Old 07-28-2009
so you are sorting the file first then giving it to the awk???
# 3  
Old 07-28-2009
yes..the input which i have given is the sorted one...
# 4  
Old 07-28-2009
then this will do ..
Code:
awk -F";" '{A[$2]=A[$2]$1FS}END{for(i in A){print i" "A[i]}}' filename

# 5  
Old 07-28-2009
It is wierd!

This also seems to work:

Code:
awk -F\; 'END { for (k in arr) print k FS arr[k] }{ arr[$2] = arr[$2] ? arr[$2] FS $1 : $1 "" }'

Seems awk sees the first zero and does "something". Turning the 0 into a string ($1 "") unconfuses it.

I'm sure it's not a bug, but it's odd behaviour.
# 6  
Old 07-28-2009
Thanks Vidyadhar... Its working.. Can you explain me if you have any idea what was the problem in the command that i have used. it was not displaying or comparing only 0.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Comparing two variables

I have a script like this. Just couldn't get the comparison part work. Any thought? thanks, #!/usr/bin/ksh -x STEP=`echo $(basename $0 .ksh) | tr "" ""` log=/skip.log while read LINE do if then echo `date`: STEP $STEP skipped by user >> $log exit 0 fi done < $1 echo... (0 Replies)
Discussion started by: ghostmic
0 Replies

2. Shell Programming and Scripting

Can -v option in awk be used to store an array of variables?

I want to pass an array of variables to be inserted by awk in the 2nd column of a file. Empl No. Employee Age 1000000 22 1100000 24 1200000 26 Now, I want to pass an array having three different ages which need to replace the... (7 Replies)
Discussion started by: Nishi_Licious
7 Replies

3. Shell Programming and Scripting

awk comparing variables

Is there a way to compare variables in a 'awk'? I've been trying for a while and can't figure it out. I'm guessing its not possible :/ VAR=Bob awk '$3 == $VAR { print $1 }' file.txt Regards Jikuu (4 Replies)
Discussion started by: Jikuu
4 Replies

4. Shell Programming and Scripting

comparing variables in an if statement

#!/bin/bash #timetest TIMENOW="$(date)" T1=12:00:00 echo $TIMENOW >timenow cat timenow |cut -f4 -d' ' >time1 T2=$(sed -n "${1}p" time1) echo "T1 = " $T1 echo "T2 = " $T2 if then echo $T1 else echo $T2 fi I thought scripting was simple! So why does this script result in: T1 =... (4 Replies)
Discussion started by: habuchas
4 Replies

5. Shell Programming and Scripting

comparing multiple variables by 'if then'

Hi, I am a noob at shell scripting. basically I am trying to compare row counts from 8 tables in different databases. I have managed to get the row counts using awk from the spool files for both databases. now I have 16 variables with me for database 1 : $A $B $C $D $E $F $G... (3 Replies)
Discussion started by: smallville
3 Replies

6. Shell Programming and Scripting

Comparing multiple variables

Hi! I've come up with a ksh-script that produces one or more lists of hosts. At the and of the script, I would like to print only those hosts that exists in all the lists. Ex. HOSTS="host1 host2 host3 host11" HOSTS="host1 host2 host4" HOSTS="host2 host11" HOSTS="host2 host5 host6 host7... (1 Reply)
Discussion started by: Bugenhagen
1 Replies

7. Shell Programming and Scripting

Comparing variables in awk

I'm writing a shellscript that monitors the price of a watch. If the prices changes, it should email me. The body of the email will show the old price and the new price. However when I compare the two awk variables(oldprice and newprice) it always says they're not the same. The shellscript goes out... (2 Replies)
Discussion started by: Shinsuio
2 Replies

8. UNIX for Dummies Questions & Answers

comparing variables

im trying to compare ipaddresses. i loop through an array to see if the ip is already is in the array and if it is it should set a flag and then i wont add it to the array. but its just adding all the ipaddresses to the array if ] then ... (3 Replies)
Discussion started by: magnia
3 Replies

9. Shell Programming and Scripting

Comparing two variables

Script #!/bin/sh hardware=PC os=WindowsNET for i in `cat newservers` do x=`sudo /opt/openv/netbackup/bin/admincmd/bpplclients |grep $i |head -40 |grep $i|awk '{print $3;exit}'` if then echo "$i is already added" else echo "Need to add" fi done O/p in debug mode bash-2.05$... (3 Replies)
Discussion started by: rajip23
3 Replies

10. UNIX for Dummies Questions & Answers

comparing variables

I have searched and found a few threads that have dealt with this, but the examples I've tried haven't seemed to help. I am monitoring our database log for high checkpoints. I can parse out the checkpoint value which can be anywhere from zero into a 3 digit number. I set a variable to be the... (3 Replies)
Discussion started by: MizzGail
3 Replies
Login or Register to Ask a Question