Creating a file with matching records from two other files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Creating a file with matching records from two other files
# 8  
Old 12-19-2009
Quote:
Originally Posted by Scrutinizer
Ahmad, the order of the output is not fixed. When I run it using mawk I get:
Code:
2222222222,fghij,09.08.09,948p0
sdjkfh343mn,74895495.89,2222222222,02.05.09,uyiuewy

1111111111,abcde,12.10.09,675069AG
abjkfd689,12.346,1111111111,15.09.09,kjfjlja
fhaie87oikjl,456788.09,1111111111,12.06.09,iieuwfdi1



---------- Post updated at 21:55 ---------- Previous update was at 21:54 ----------

Alternative in shell :
Code:
while read line; do
  if match=$(grep "${line%%,*}" file2); then
    printf "$line\n$match\n"
  fi
done < file1 > file3

Output:
Code:
1111111111,abcde,12.10.09,675069AG
abjkfd689,12.346,1111111111,15.09.09,kjfjlja
fhaie87oikjl,456788.09,1111111111,12.06.09,iieuwfdi1
2222222222,fghij,09.08.09,948p0
sdjkfh343mn,74895495.89,2222222222,02.05.09,uyiuewy

Not as efficient as awk though for large numbers but perhaps good enough.
Scrutinizer: you can use gawk or nawk and the o/p order will be as requested
SmilieSmilieSmilieSmilie
# 9  
Old 12-19-2009
Quote:
Originally Posted by ahmad.diab
Scrutinizer: you can use gawk or nawk and the o/p order will be as requested
SmilieSmilieSmilieSmilie
Ahmad, mawk is a great implementation that is usually much faster than nawk and gawk, and it works like nawk. Also, neither nawk nor gawk guarantee the right order either. See: The GNU Awk User's Guide: Sorting Array Values and Indices with gawk
Quote:
The order in which an array is scanned with a ‘for (i in array)’ loop is essentially arbitrary.

Last edited by Scrutinizer; 12-19-2009 at 08:07 PM..
# 10  
Old 12-20-2009
Quote:
Originally Posted by Scrutinizer
Ahmad, mawk is a great implementation that is usually much faster than nawk and gawk, and it works like nawk. Also, neither nawk nor gawk guarantee the right order either. See: The GNU Awk User's Guide: Sorting Array Values and Indices with gawk
in the attched linked you post there is a way to sort the index and garantee
the o/p order as below:-

example from the link:-
Code:
j = 1
     for (i in data) {
         ind[j] = i    # index value becomes element value
         j++
     }
     n = asort(ind)    # index values are now sorted
     for (i = 1; i <= n; i++) {
         do something with ind[i]           Work with sorted indices directly
         ...
         do something with data[ind[i]]     Access original array via sorted indices
     }

although nawk is giving me the order I want without using asort.

Code:
cat file1.txt
1111111111,abcde,12.10.09,675069AG
2222222222,fghij,09.08.09,948p0
4444444444,hdfhfh,090909,7y7y7y


Code:
cat file2.txt
sdjkfh343mn,74895495.89,2222222222,02.05.09,uyiuewy
abjkfd689,12.346,1111111111,15.09.09,kjfjlja
fhaie87oikjl,456788.09,1111111111,12.06.09,iieuwfdi1
erererer,3840.98,3333333333,11.12.09,uyeriery
uuuuu,hhhhh,4444444444,kjhgf


Code:
o/p when using nawk

1111111111,abcde,12.10.09,675069AG 
abjkfd689,12.346,1111111111,15.09.09,kjfjlja
fhaie87oikjl,456788.09,1111111111,12.06.09,iieuwfdi1

2222222222,fghij,09.08.09,948p0 
sdjkfh343mn,74895495.89,2222222222,02.05.09,uyiuewy

4444444444,hdfhfh,090909,7y7y7y 
uuuuu,hhhhh,4444444444,kjhgf

SmilieSmilieSmilieSmilieSmilieSmilie
# 11  
Old 12-20-2009
Yes, that was my point. The order may be happenstancically right, but you would have to put in additional code to ensure the proper order.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk for matching fields between files with repeated records

Hello all, I am having trouble with what should be an easy task, but seem to be missing something fundamental. I have two files, with File 1 consisting of a single field of many thousands of records. I also have File 2 with two fields and many thousands of records. My goal is that when $1 of... (2 Replies)
Discussion started by: jvoot
2 Replies

2. UNIX for Beginners Questions & Answers

Matching fields between two files, repeated records

In two previous posts (here) and (here), I received help from forum members comparing multiple fields across two files and selectively printing portions of each as output based upon would-be matches using awk. I had been fairly comfortable populating awk arrays with fields and using awk's special... (3 Replies)
Discussion started by: jvoot
3 Replies

3. Shell Programming and Scripting

How can I retrieve the matching records from data file mentioned?

XYZNA0000778800Z 16123000012300321000000008000000000000000 16124000012300322000000007000000000000000 17234000012300323000000005000000000000000 17345000012300324000000004000000000000000 17456000012300325000000003000000000000000 9 XYZNA0000778900Z 16123000012300321000000008000000000000000... (8 Replies)
Discussion started by: later_troy
8 Replies

4. Shell Programming and Scripting

Shell script to filter records in a zip file that contains matching columns from another file

Not sure if this is the correct forum for this question. I have two files. file1.zip, file2 Input: file1.zip col1, col2 , col3 a , b , 0:0:0:0:0:c436:9346:d40b x, y, 0:0:0:0:0:880:39f9:c9a7 m, n , 0:0:0:0:0:80c7:9161:fe00 file2.txt col1 c4:36:93:46:d4:0b... (1 Reply)
Discussion started by: anil.v
1 Replies

5. Shell Programming and Scripting

Performance of calculating total number of matching records in multiple files

Hello Friends, I've been trying to calculate total number of a certain match in multiple data records files (DRs). Let say I have a daily created folders for each day since the beginning of july like the following drwxrwxrwx 2 mmsuper med 65536 Jul 1 23:59 20150701 drwxrwxrwx 2 mmsuper... (1 Reply)
Discussion started by: EAGL€
1 Replies

6. Shell Programming and Scripting

Listing the file name and no of records in each files for the files created on a specific day

Hi, I want to display the file names and the record count for the files in the 2nd column for the files created today. i have written the below command which is listing the file names. but while piping the above command to the wc -l command its not working for me. ls -l... (5 Replies)
Discussion started by: Showdown
5 Replies

7. Shell Programming and Scripting

Creating single pattern for matching multiple files.

Hi friends, I have a some files in a directory. for example 856-abc 856-def 851-abc 945-def 956-abc 852-abc i want to display only those files whose name starts with 856* 945* and 851* using a single pattern. i.e 856-abc 856-def 851-abc 945-def the rest of the two files... (2 Replies)
Discussion started by: Little
2 Replies

8. Shell Programming and Scripting

Compare two files with different number of records and output only the Extra records from file1

Hi Freinds , I have 2 files . File 1 |nag|HYd|1|Che |esw|Gun|2|hyd |pra|bhe|3|hyd |omu|hei|4|bnsj |uer|oeri|5|uery File 2 |nag|HYd|1|Che |esw|Gun|2|hyd |uer|oi|3|uery output : (9 Replies)
Discussion started by: i150371485
9 Replies

9. Shell Programming and Scripting

Removing non matching records

Hi all I have a file with records starting with "Page" has a first column. some of the records have some other junk characters has first column. so pls help me to remove rows which is not having "Page" has a first column. Thanks, Baski (2 Replies)
Discussion started by: baskivs
2 Replies

10. UNIX for Dummies Questions & Answers

How can you delete records in a file matching a pattern?

I am curious if the following can be done in a file in unix. Let's say I have a flat file with the following data AAA,12,2,,,, BBB,3,1,,,, CCC,,,,, DDD,2,,,,, SQQ,,,,, ASJ,,3,5 I only want to capture the data with values into a new file. If the data contains the pattern ,,,,, as in... (2 Replies)
Discussion started by: mode09
2 Replies
Login or Register to Ask a Question