gawk HELP


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting gawk HELP
# 1  
Old 06-15-2006
gawk HELP

I have to compare records in two files. It can be done using gawk/awk but i am unable to do it. Please help me


File1

ABAAAAAB BC asa sa
ABAAABAA BC bsa sm
ABBBBAAA BC bxz sa
ABAAABAB BC csa sa
ABAAAAAA BC dsa sm
ABBBBAAB BC dxz sa

File 2
ABAAAAAB BC aas ba
ABAAAAAB BC asa sa
ABAAABAA BC ban sm
ABBBBAAA BC bxz sa
ABAAABAB BC csa sa
ABAAAAAA BC dsa sm
ABBBBAAB BC dxz sa
ABBBBAAB BC fxz sa


How should files be compared
1. We should take 3rd and 4th fields(eg asa sa in file 1 line 1) in first file and look for it in second file's third and fourth columns.
2. If 3rd and 4th filed of first file matches with 3rd and 4th field of some record of 2nd file then we need to compare rest of line..like comapring ABAAAAAB BC in file 1 with ABAAAAAB BC in file 2 for asa sa.
3.If there is a mismatch then we need to give the output that mismatch has occured else No Error.

Please help in this regard

-Sandeep
# 2  
Old 06-15-2006
nawk -f sandeep.awk file2 file1

sandep.awk:
Code:
FNR==NR {arr[$3 FS $4] = $1 FS $2; next}
{
   if ( !($3 FS $4) in arr )
      print "MEGAmismatch"
   else if ( ($1 FS $2) != (arr[$3 FS $4]) )
      print "mismatch"
}

The rest is left up to the OP to figure out - not tested.
# 3  
Old 06-15-2006
It is not printing MEGAmismatch at all some problem is there.
# 4  
Old 06-15-2006
Quote:
Originally Posted by sandeep_hi
It is not printing MEGAmismatch at all some problem is there.
sorry - as I said - 'not tested':
Code:
FNR==NR {arr[$3 FS $4] = $1 FS $2; next}
{
   if ( !( ($3 FS $4) in arr) )
      printf("[%s]: MEGAmismatch of [%s]\n", FNR, $3 OFS $4)
   else if ( ($1 FS $2) != (arr[$3 FS $4]) )
      printf("[%s]: mismatch of [%s] on MEGAmatched [%s]\n", FNR, $1 OFS $2, $3 OFS $4)
}


Last edited by vgersh99; 06-15-2006 at 11:37 AM..
# 5  
Old 06-16-2006
Thnaks alot !!!

I could not understand this line of code can u please explain me what exactly it is meant for and how is it happening:

Quote:
FNR==NR {arr[$3 FS $4] = $1 FS $2; next}
# 6  
Old 06-16-2006
Quote:
Originally Posted by sandeep_hi
Thnaks alot !!!

I could not understand this line of code can u please explain me what exactly it is meant for and how is it happening:
Code:
FNR==NR {arr[$3 FS $4] = $1 FS $2; next}

Quote:
Originally Posted by man nawk
NR ordinal number of the current record

FNR ordinal number of the current record in the current file
'FNR==NR' will be true for the FIRST file to be processed

'arr' is an associative array indexed by the values of fields '3' and '4' and having the content of cancatenated value of fields '1' and '2'.

When processing the FIRST file specified on the command line we're building the hash/associative array used later on in the script for doing the 'lookups'.

Look into 'man nawk' for the details on the associative arrays.
# 7  
Old 06-19-2006
Thank you so much .

Regards
sandeep
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Gawk and regexp

Hello, This is a problem I've worked on a while and can't figure out. There is a file.txt ..some stuff.. ] ] ..some stuff.. The Awk program is trying to extract the year portion of the birth and death ("98: and "2nd C.") using the below technique #!/bin/awk @include... (5 Replies)
Discussion started by: Mid Ocean
5 Replies

2. SCO

Gawk Question

I am trying to use gawk to search a file and put the second value of the string into a string. gawk -F: '$1~/CXFR/ {print $2}' go.dat go.dat ==================== HOME :/ CTMP :/tmp CUTL :/u/rdiiulio/bin CWRK :/u/work CXFR :/u/xfer ... (4 Replies)
Discussion started by: trolley
4 Replies

3. SCO

Need help with gawk

I am trying to use gawk to search a file and put the second value of the string into a string. gawk -F: '$1~/CXFR/ {print $2}' go.dat Below is the file 'go.dat' ==================== HOME :/ CTMP :/tmp CUTL :/u/rdiiulio/bin CWRK :/u/work CXFR :/u/xfer ... (1 Reply)
Discussion started by: trolley
1 Replies

4. Shell Programming and Scripting

Doubt with gawk

Hi All, I have a doubt with gawk. I have a shell script "cleanup" which calls a gawk script "cleanawk" in it. we have two unix servers epsun532 and wpsun712. So i tested the script in both the environments. In epsun532 while calling the gawk script i just mentioned something like this ... (1 Reply)
Discussion started by: Diddy
1 Replies

5. Shell Programming and Scripting

Gawk help (windows)

Someone help please. I tried to do it with findstr but I couldn't, so now I'm trying to output the following numbers from this text file with gawk (what I need is in bold down below): Analyzing pool.ntp.org (1 of 1)... delayoffset from local clock Stratum: 2 Warning: Reverse name... (18 Replies)
Discussion started by: harris_t
18 Replies

6. Shell Programming and Scripting

Help with gawk command

Hi, I have a situation. in a particular file , from the 9th column i have to match a particular pattern . i want a second file which is made by excluding them. I wrote a code like this. gawk '$9~/^(SPI|OTC|SAX)$/' /home/ceh1/ceh_prod/plx_"$mydate"_old.tsv >>... (1 Reply)
Discussion started by: pranabrana
1 Replies

7. Shell Programming and Scripting

Gawk Help

Hi, I am using the script to print the portion of the file containing a particular string. But it is giving error "For Reading (No such file or directory). I am using cygwin as unix simulator. cat TT35*.log | gawk -v search="12345678" ' /mSOriginating /,/disconnectingParty/ { ... (1 Reply)
Discussion started by: vanand420
1 Replies

8. Shell Programming and Scripting

gawk to perl

Hi all I’m looking for a perl equivalent to this command string I need to imbed this in a existing perl script cat file1 | gawk -F"|" '{print $1","$2,",",$3,",",$11 >> "new-file"}' Thank you (4 Replies)
Discussion started by: Ex-Capsa
4 Replies

9. Shell Programming and Scripting

gawk and bash

Hi. I'm having trouble using gawk within a bash script and I can't figure out why. I have a command that takes in a data file with two columns, the first one numbers and the second words. My code takes each line, and prints the word its corresponding number of times. The code works from the... (2 Replies)
Discussion started by: cdislater
2 Replies

10. Shell Programming and Scripting

unable to use GAWK

The following message is being prompted while using gawk in my ksh : gawk: not found any idea how to fix this ? (1 Reply)
Discussion started by: sinpeak
1 Replies
Login or Register to Ask a Question