Visit Our UNIX and Linux User Community


awk cross-referencing between two files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk cross-referencing between two files
# 1  
Old 06-06-2011
awk cross-referencing between two files

I need to make my sloppy, existing code (non awk) more efficient and I seem to be terrible with awk Smilie

I've tried around quite a bit, maybe you guys can conjure up a quick solution...

file1:

Code:
2 SOL 563
      2 SOL 565
      3 SOL 589
      2 SOL 603
      1 SOL 612
      1 SOL 621
      2 SOL 623
3 SOL 770
      3 SOL 771
      3 SOL 772
      3 SOL 773
2 SOL 774



file 2:
Code:
ATOM  58262   OW SOL  18120     27.770  75.370 125.740
ATOM  58263  HW1 SOL  18120     28.020  75.170 124.790
ATOM  58264  HW2 SOL  18120     28.490  75.930 126.160
ATOM  58265   OW SOL  18121     28.420  85.640 128.910
ATOM  58266  HW1 SOL  18121     27.430  85.700 129.010
ATOM  58267  HW2 SOL  18121     28.650  84.840 128.350
ATOM  58268   OW SOL  18122     25.670  84.980 115.400
ATOM  58269  HW1 SOL  18122     25.530  85.050 116.390
ATOM  58270  HW2 SOL  18122     26.510  84.470 115.220
ATOM  58271   OW SOL  18123     22.720  82.610 124.230
ATOM  58272  HW1 SOL  18123     23.580  82.730 124.730
ATOM  58273  HW2 SOL  18123     22.300  81.740 124.500
ATOM  58274   OW SOL  18124     31.360  78.340 124.340
ATOM  58275  HW1 SOL  18124     31.570  79.080 124.980
ATOM  58276  HW2 SOL  18124     30.470  78.510 123.910


So basically what I need is this...

1) check every line of file1/column1 for values smaller than 3
2) if true then read value of file1/column3
3) cross-reference value of file1/column3 with value of file2/column5
4) if match found then delete line from file2

I've started with...

Code:
awk '{a[d++]=$1}END{for(i=1;i<=d;i++){ if ( a[i] < 3 ) print a[i] }}' < file1

...so basically I'm stuck with step 2) already.

Could you set me on the right track?

Last edited by radoulov; 06-06-2011 at 11:46 AM.. Reason: Code tags.
# 2  
Old 06-06-2011
Code:
nawk 'FNR==NR {if($1<3) f1[$3];next} !($5 in f1)' file1 file2

This User Gave Thanks to vgersh99 For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #513
Difficulty: Easy
Most programming languages are not case sensitive.
True or False?

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Dynamically referencing a Path

How would I reference a source path (where I have a script pulling data from) that changes location? For example, a Mail folder is being used as a source to pull some data, but somebody could move the folder around in the GUI of Mail, changing it's location in the filesystem (that I am referencing... (11 Replies)
Discussion started by: sudo
11 Replies

2. Shell Programming and Scripting

Referencing file for values and referencing another file to replace values

Hi I have a file which has values in each line: MP304,d40000 MP310,ff0000 etc I have another file which as the first value in it and is unique in the file(not repeated). I need to replace a string with the second value above. The second file contents is as follows:(snippet) <g ... (12 Replies)
Discussion started by: majikins
12 Replies

3. UNIX for Dummies Questions & Answers

Cross complie linux make files onto a windows 7 machine using PGI Cygwin

Hello, I am very unfamiliar with linux/unix (don't even know the difference), but am trying to get some linux software to run on my Windows machine for my research. I have the makefiles for the software, and it is designed to be compiled in the PGI complier, which I also have. When i... (6 Replies)
Discussion started by: roba87
6 Replies

4. Shell Programming and Scripting

Cross checking two files

i have two files which contains some fields separated by columns as 03/29/1999 08:48:12 02 172.16.114.50 03/29/1999 09:08:00 480 172.16.112.100 Both of the files do have the same format I want the script which will take two such... (3 Replies)
Discussion started by: vaibhavkorde
3 Replies

5. Shell Programming and Scripting

Variable Referencing

I am referencing variables in the following way var1="greeting" greeting="Welcome!" How do I echo var1 in such a way that it outputs Welcome! ? (3 Replies)
Discussion started by: milo7
3 Replies

6. Programming

Symbol referencing error

Hey everyone, I can't figure out this symbol referencing error after looking at it for the longest time, and I figured some fresh eyes might be able to point something out I am overlooking. Undefined first referenced symbol in... (1 Reply)
Discussion started by: fromatz
1 Replies

7. Shell Programming and Scripting

files cross over

I have many files (File 1, File 2, File 3, ...) in same directory. The format of all these files are same. What I would like to do is to combine all these files into a single file via cross over. Example) >>File 1 look like this. f1 01 1.0 f1 02 2.0 f1 03 3.0 f1 04 4.0 f1 05 5.0 f1 06... (2 Replies)
Discussion started by: Jae
2 Replies

8. Shell Programming and Scripting

Referencing variables in commands

The script I am writing must be able to run several commands (tar, gzip etc) on filenames that are supplied by variables. I am unsure as to what syntax is required/ideal when referencing variables in filenames. The following is a sample command that I would like the script to execute: tar cvf... (3 Replies)
Discussion started by: mharley
3 Replies

9. Shell Programming and Scripting

Referencing a range of parameters?

I can't seem to find anywhere how to syntactically reference a range of parameters in the script I am trying to write. My script requires at least 2 parameters to run, with parameter 1 being the main file, which I want appended to x amount of target files, which will be parameters 2 through... (4 Replies)
Discussion started by: Relykk
4 Replies

Featured Tech Videos