Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Hoping for some help with a script I need to implement. New-ish to shell scripting but no-one else here has any clue about shell scripting, let alone AWK and I am struggling.
I have 2 files, the 1st column in both is the RecID so to speak. The Merge file will contain all records contained in Prim file. In addition any records which aren't in the primary file but in the SecFile will get added to the Merge File.
PrimFile:
DE3001 16/06/09 P
DE4001 16/06/09 P
DE4101 16/06/09 P
DU3101 16/06/09 0
SecFile:
DE4101 13/06/04 0
DU3101 27/01/11 P
DS2111 19/01/07 P
MergeFile:
DE3001 16/06/09 P
DE4001 16/06/09 P
DE4101 16/06/09 P
DU3101 16/06/09 0
DS2111 19/01/07 P
Appreciate any help..
Suzanne
Click here to see the post LQ members have rated as the most helpful post in this thread.
#!/bin/bash
awk 'BEGIN { while ( ( getline < "PrimFile" ) > 0 )
uniquarray[$1] = $2" "$3
}
{
if ( ! uniquarray[$1] ) {
uniquarray[$1] = $2" "$3 }
}
END {
for (i in uniquarray) {print i,uniquarray[i]}
}' SecFile | sort > MergeFile
exit 0
As stated by onebuck, you should post what you have tried or what parts are unclear. On the other hand I do believe that an awk solution for this problem isn't something that can be easily done by someone without any scripting knowledge......
I won't include a description of how the above script works, that's for you (silkysue) to find out (and hopefully learn something in the process).
So Druuna your solution also worked and am looking through it trying to see how it works:
1st field in PrimFile is the key, stick into an array
Loop through the array and for any key in SecFile but not PrimFile print to file
Sort to Mergefile
So Druuna your solution also worked and am looking through it trying to see how it works:
1st field in PrimFile is the key, stick into an array Loop through the array and for any key in SecFile but not PrimFile print to file
Sort to Mergefile
You have the bold part backwards....
SecFile is "looped" (read line by line by awk) and its first field is checked against the array. If it doesn't exist; add it.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.