ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
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.
I have the following problem using a combination of grep and awk commands.
I have an input ascii file (let's call it tmp1) which looks like this:
1234
789
889
and a second file, tmp2, with various columns, in the format:
3838 3328898 789 2398493
1234 3283298 84290 0238438
889 2311201 001 3234389
I would like to match these two files using the FIRST column of the two files
as a reference, i.e. . Example:
If you take the entry in the first line of tmp1 (1234), it matches well
with the second line of tmp2, as they both contain in their first column
the same entry. The same happens for the third line of the two files,
as they both contain the entry 889 in the first column of both files.
If I use a script such as:
for id in $(awk '{print $1}' tmp1)
do
grep [[:space:]]$id[[:space:]]
done
I will also select the first line of tmp2, which I do not want as the value 789
in tmp2 is NOT found in the first column.
First, your script does not reference the file "tmp2"--looks like you left something out.
Second, why the space before "$id"? If you want to match $id at the beginning of the line, you need "^$id" (or maybe "^\$id")
Hi,
I indeed forgot the tmp2 in the do loop when typing the thread. My files were having spaces before the numbers you see, so the \^ option would not work. In any case, ghostdog74's answer solved my problem.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.