Intersection by specific columns


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Intersection by specific columns
# 15  
Old 03-08-2014
I'm a bit confused. I want to intersect two files based on their specific column, let's say column $4 from both files. This is just printing col 4 & 6 of the first and second files, respectively. This doesn't do the intersection.
# 16  
Old 03-08-2014
Give us an sample input and expected output.
You mean coulmn 4 in file1 == column 6 in file2 then print?
# 17  
Old 03-08-2014
Yes, that's what I meant.
# 18  
Old 03-08-2014
Let's say this is my first file:
Code:
a	b	c	d	e	f

And this is the second one:
Code:
1	2	3	4	5	d

This is what I want:
Code:
a	b	c	d	e	f	1	2	3	4	5	d

# 19  
Old 03-08-2014
Code:
awk 'NR==FNR{A[$4]=$0; next} $6 in A{ print A[$6]"\t"$0 }' file1 file2

This User Gave Thanks to ahamed101 For This Post:
# 20  
Old 03-08-2014
Great, thanks for your help

---------- Post updated at 07:32 PM ---------- Previous update was at 05:55 PM ----------

Sorry Ahamad to bug you again but I have one more request. This scripts excludes the lines in the first file which don't intersect. I like to print all of the lines in the first file including the ones which don't intersect. Let me make it simple by this example:

File1
Code:
a	b	c	d	e	f
g	h	i	j	k	l

File2
Code:
1	2	3	4	5	d

Output:
Code:
a	b	c	d	e	f	1	2	3	4	5	d
g	h	i	j	k	l

Please let me know if this doesn't make sense to you.

---------- Post updated at 07:44 PM ---------- Previous update was at 07:32 PM ----------

This actually prints the all first file first then it prints the intersect. This will cause a lot of duplicates in my final output.
# 21  
Old 03-08-2014
Code:
awk 'NR==FNR{A[$6]=$0; next} $4 in A{$0=$0"\t"A[$4]} 1' file2 file1

Untested. Note the swap in file names.

Last edited by ahamed101; 03-09-2014 at 12:14 AM.. Reason: Corrected code
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Intersection by part of the string

Hi, I like to intersect two files based on their first columns. Here is the code which does the trick for me: awk 'NR==FNR{A;next}$1 in A' file1 file2 However, this only looks for exact matches between the two files in the first column. I need them to be printed even if part of the string... (10 Replies)
Discussion started by: a_bahreini
10 Replies

2. UNIX for Dummies Questions & Answers

Printing lines with specific strings at specific columns

Hi I have a file which is tab-delimited. Now, I'd like to print the lines which have "chr6" string in both first and second columns. Could anybody help? (3 Replies)
Discussion started by: a_bahreini
3 Replies

3. Shell Programming and Scripting

Can't figure out how to find specific characters in specific columns

I am trying to find a specific set of characters in a long file. I only want to find the characters in column 265 for 4 bytes. Is there a search for that? I tried cut but couldn't get it to work. Ex. I want to find '9999' in column 265 for 4 bytes. If it is in there, I want it to print... (12 Replies)
Discussion started by: Drenhead
12 Replies

4. Shell Programming and Scripting

Deleting specific columns

Hi group, Can you please tell how to delete specific columns from a file. I know something like awk -F, '{ print $1" "$2" "15 }' input.txt > output.txt will delete all other columns. But this is in a way to copy some particular columns. But is there any other way to select just some... (11 Replies)
Discussion started by: smitra
11 Replies

5. Shell Programming and Scripting

Finding intersection

Hi Friends, I would like to be helped for the following issue I am currently stuck with I have two files like the following tom ram 10 20 hey bye 11 12 bus cat 20 30 put but 25 30 jak mok 11 12 fil don 76 57 bus cat 23 45 pan ban 09 78 put but 45 67 kis mis 23 45 I would like... (2 Replies)
Discussion started by: jacobs.smith
2 Replies

6. Homework & Coursework Questions

ls in specific columns

Hello, i need to get the ls output in 2 columns.1st column the directories and 2nd the files... Also each column must be sorted by time... For example if the >>ls command gives me this : /dir2 /dir /dir1 /dir3 file1 file2 I need to take this : /dir file1 /dir1 ... (15 Replies)
Discussion started by: giampoul
15 Replies

7. Web Development

Intersection and union of array by hash

Hi, A piece of script from Perl-cookbook I do not understand, and post here for explanation. The purpose is to find the element in either array (union), and in both array (intersection). Thank you in advance. @a=qw(1 3 5 6 7 8); @b=qw(2 3 5 7 9); foreach $e (@a, @b) {$union{$e}++ &&... (3 Replies)
Discussion started by: yifangt
3 Replies

8. Shell Programming and Scripting

Mean of the specific columns

I have a input file that has some common values in 1st,2nd and 3rd columns. 4th and 5th are different. Now I would like to print the mean of the fourth column of similar values in 1st.2nd and 3rd columns along with all the values in 5th column. input NM_0 1.22 CR5 0.4 n_21663... (10 Replies)
Discussion started by: repinementer
10 Replies

9. Shell Programming and Scripting

Replace specific columns

hi All, Thi sis very urgent. I have large files with pipe delimited. For example: 1.txt 1001024|120|9|-0.0|#| 1001025|120|9|#| 1001026|120|9|#| 1001032|120|2|-0.0|#| 1002026|110|9|#| 1002027|110|9|-0.0|#| 1002028|120|1|1.0|#| I need to replace the 4th filed if it is # by |-| my... (2 Replies)
Discussion started by: jisha
2 Replies

10. Shell Programming and Scripting

Find the intersection between two files

How can find the intersection between files for Example: file1 entry1 entry2 entry3 entry33 file2 entry2 entry4 entry5 . . . . the output should be entry2 (9 Replies)
Discussion started by: makrami
9 Replies
Login or Register to Ask a Question