merging files using awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting merging files using awk
# 1  
Old 02-03-2012
merging files using awk

Hi,

I have 2 files.

File 1

Code:
chr1  1234   2468   ABC
chr1  3456   4567   DEF
chr2  5643   6154   XYZ 
:
:
:
:
so on....

File 2

Code:
chr1  1500 2500   positive
chr1  2500 3500   negative
chr1  3000 4500   neutral
chr2  5800 6500   asterick

so on...

What I want is if the column 2 of file 2 is falling between columns 2 and 3 of file 1 then file 2 row should be assigned the value of column 4 of file1. Also it should consider the chr 1 in column 1, bcoz only those positions should be matched. (What i mean is if the column 2 of file 2 is falling between column 2 and 3 of different chromosome then it should not be assigned that gene. chr 1 of file 2 have to be matched to only chr1 of file 1)

output

Code:
chr1  1500 2500   positive         ABC
chr1  2500 3500   negative        DEF
chr1  3000 4500   neutral          DEF
chr2  5800 6500   asterick         XYZ

Thanks,

Diya
# 2  
Old 02-03-2012
I think chr1 1500 2500 positive ABC shouldn't be in your output (1234 is not between 1500 and 2500). The same goes for chr2 5800 6500 asterick XYZ(5643 is not between 5800 and 6500)...

Last edited by bartus11; 02-03-2012 at 02:45 PM..
# 3  
Old 02-03-2012
No, you are looking it the other way 1500-2500 of file 2 falls between 1234 and 2468. so it should be assigned ABC value in column 4. Same goes with the 4th row also.

Let me know if I am not clear.. I can explain more in detail

Thanks,
# 4  
Old 02-03-2012
OK, then chr1 2500 3500 negative DEF shouldn't be in output, correct?
# 5  
Old 02-03-2012
No, it should be in the output as part of it is between 3456 4567.

Does this make sense?

Thanks,
# 6  
Old 02-03-2012
You wrote "if the column 2 of file 2 is falling between columns 2 and 3 of file 1". 2500 is the value of column 2 file 2 for this row. It does not fall between 3456 and 4567... Or am I missing something?
# 7  
Old 02-03-2012
Sorry it should be if the range between column 2 and column3 of file 2 is falling between the range of column2 and column 3 of file 1 of the same chromosome then it should be assigned the name of column 4 in file 1 to file 2.

Thanks,

Diya
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk Merging multiple files with symbol representing new file

I just tried following ls *.dat|sort -t"_" -k2n,2|while read f1 && read f2; do awk '{print}' $f1 awk FNR==1'{print $1,$2,$3,$4,$5,"*","*","*" }' OFS="\t" $f2 awk '{print}' $f2 donegot following result 18-Dec-1983 11:45:00 AM 18.692 84.672 0 25.4 24 18-Dec-1983 ... (3 Replies)
Discussion started by: Akshay Hegde
3 Replies

2. Shell Programming and Scripting

Merging rows in awk

Hello, I have a data format as follows: Ind1 0 1 2 Ind1 0 2 1 Ind2 1 1 0 Ind2 2 2 0 I want to use AWK to have this output: Ind1 00 12 21 Ind2 12 12 00 That is to merge each two rows with the same row names. Thank you very much in advance for your help. (8 Replies)
Discussion started by: Homa
8 Replies

3. Shell Programming and Scripting

Merging two files in awk

Hi, How I can merge two file columns such as the followings using awk: file 1 2 3 2 2 1 1 file 2 4 3 4 5 7 6 Result: 2 3 4 3 2 2 4 5 1 1 7 6 This is an example, at the end, I will have about 25 files that I want to merge them, it is important for me that the order in the... (7 Replies)
Discussion started by: Homa
7 Replies

4. Shell Programming and Scripting

Merging together two awk scripts

I have two awk scripts shown below. checkTrvt.awk works on file format .xt, whereas checkData.awk workds on file format .dat I want to merge the two scripts together, if I find that the user passed .xt file I do the code for .xt file, whereas if user passes .dat file, I go through the code for... (9 Replies)
Discussion started by: kristinu
9 Replies

5. Shell Programming and Scripting

AWK Script For Merging Text Files

Hello, I am trying to merge data from two text files. One file (File1) contains a listing of data which includes the trial number in Column 5, while the other text file (File2) contains what category the trial belongs to. Here is a snippet of what File1 looks like. 1 Arrow_ST 9.738 0.905... (2 Replies)
Discussion started by: Jahn
2 Replies

6. Shell Programming and Scripting

awk command : row by row merging of two files

I want to write a scrpit to merge files row wise (actually concatinating) main.txt X Y Z file 1 A B C file 2 1 2 3 now i want the script to check if the file1 is empty or not, if empty then make it like A B C 1 2 3 again to check if second file is empty if not do as done... (0 Replies)
Discussion started by: shashi792
0 Replies

7. Shell Programming and Scripting

awk merging files based on 2 complex conditions

1. if the 1st row IDs of input1 (ID1/ID2.....) is equal to any IDNames of input2 print all relevant values together as defined in the output. 2. A bit tricky part is IDno in the output. All we need to do is numbering same kind of letters as 1 (aa of ID1) and different letters as 2 (ab... (4 Replies)
Discussion started by: ruby_sgp
4 Replies

8. Shell Programming and Scripting

merging of 2 files AWK, SHELL or something else

I have 2 files pipe delimted and want to merge them based on a key e.g file 1 123|xxx|yyy|zzz 345|xab|yzy|zyz 456|sss|ttt|foo file 2 123|hhh|ggg|xxx 345|ddd|www|ddd|fff 456|ddd|sss|sss|eee so if the key is the first field, and the result should be file 1 with field 2 from file 2... (24 Replies)
Discussion started by: klut
24 Replies

9. Shell Programming and Scripting

merging of 2 files AWK - part 2

i have try , but i think i will never learn awk :( now i have 2 files : a 1:aaa:2:aaa1 2:bbb:2:bbb1 3:ccc:3:ccc1 b aaa:2 bbb:0 ccc:3 output: for all lines where a.$2 == b.$1 i want to compare a.$3 != b.$2 if true then set err=1 if false set err=0 and print all lines from file a +... (2 Replies)
Discussion started by: pp56825
2 Replies

10. Shell Programming and Scripting

Merging files with AWK filtering and counting lines

Hi there, I have a couple of files I need to merge. I can do a simple merge by concatenating them into one larger file. But then I need to filter the file to get a desired result. The output looks like this: TRNH 0000000010941 ORDH OADR OADR ORDL ENDT 1116399 000000003... (2 Replies)
Discussion started by: Meert
2 Replies
Login or Register to Ask a Question