#!/usr/bin/perl
#
use strict;
use warnings;
# two files must be given at command line
my $first_file = shift or die;
my $second_file = shift or die;
my %data;
my $f;
# process lines from first file
open $f, "<", $first_file or die "$!\n";
while(<$f>) {
# split line into fields
my @fields = split;
# create a key based on first two fields separated by tab
my $key = join "\t", @fields[0..1];
# add to data structure and append a list as place holder
# for second file data
$data{$key} = [@fields[2..$#fields], ("X23", 0, 0, 0, 0)];
}
close $f;
# process all lines from second file
open $f, "<", $second_file or die "$!\n";
while(<$f>) {
my @fields = split;
my $key = join "\t", @fields[0..1];
# the same key exist in first and second file
# remove the place holder data
if(exists $data{$key}){
$data{$key} = [@{$data{$key}}[0..4], @fields[2..$#fields]];
# key only exist in second file. Add padding in front.
}else{
$data{$key} = [("XX2720", 0, 0, 0, 0), @fields[2..$#fields]]
}
}
close $f;
for my $k (keys %data) {
print join "\t", ($k, @{$data{$k}});
print "\n";
}
Is it possible to do a join on multiple fields of two files? I am trying to do something like join -t, -1 2,3 -2 2,3 -o 2.1,2.2,2.3,1.3 filea fileb
I want the join to be on columns 2 and 3 of filea and columns 2 and 3 of fileb.
What is hapenning is that the second file that I want to do the join... (1 Reply)
I've looked at the join command which is able to perform what I need on two rows with a common field, however if I have more than two rows I need to join all of them.
Thus I have one file with multiple rows to be joined on an index number:
1 randomtext1
2 rtext2
2 rtext3
3 rtext4
3 rtext5... (5 Replies)
Hello,
My apologies if this has been posted elsewhere, I have had a look at several threads but I am still confused how to use these functions. I have two files, each with 5 columns:
File A: (tab-delimited)
PDB CHAIN Start End Fragment
1avq A 171 176 awyfan
1avq A 172 177 wyfany
1c7k A 2 7... (3 Replies)
I am trying to join a few hundred files using join. Is there a way to use while read or something else to automate this. My problem is the following.
Day 1
City Temp
ABC 20
DEF 30
HIJ 15
Day 2
City Temp
ABC 22
DEF 29
KLM 5
Day 3 (3 Replies)
Hi, I need help with the join command
I have 2 files that I want to join on multiple fields.
I want to return all records from file 1
I also want empty fields in my joined file if there isn't a match in file 2
I have already sorted them so I know they are in the same order.
file1 ... (0 Replies)
Hi,
I have 20 tab delimited text files that have a common column (column 1). The files are named GSM1.txt through GSM20.txt. Each file has 3 columns (2 other columns in addition to the first common column).
I want to write a script to join the files by the first common column so that in the... (5 Replies)
Hello Friends,
I just need a small help, I need an awk program which can join 2 fields of different files which are having one common field into one file.
File - 1
FileName~Size
File- 2
FileName~Date
I need the output file in the following way
O/P- File
FileName~Date~Size
For... (4 Replies)
Hi All,
I am looking for an awk script to do the following
Join the fields together only if the first 4 fields are same.
Can it be done with join function in awk??
a,b,c,d,8,,,
a,b,c,d,,7,,
a,b,c,d,,,9,
a,b,p,e,8,,,
a.b,p,e,,9,,
a,b,p,z,,,,9
a,b,p,z,,8,,
desired output:
... (1 Reply)
Hi there,
I am trying to join 24 files (i showed example of 3 files below). They all have 2 columns. The first columns is common to all. The files are tab delimited eg
file 1
rs0001 100e-34
rs0003 2.8e-01
rs008 1.9e-90
file 2
rs0001 1.98e-22
rs0004 3.77e-10... (4 Replies)
Discussion started by: fat
4 Replies
LEARN ABOUT MOJAVE
tk_nameofjoinstyle
Tk_GetJoinStyle(3) Tk Library Procedures Tk_GetJoinStyle(3)__________________________________________________________________________________________________________________________________________________NAME
Tk_GetJoinStyle, Tk_NameOfJoinStyle - translate between strings and join styles
SYNOPSIS
#include <tk.h>
int
Tk_GetJoinStyle(interp, string, joinPtr)
const char *
Tk_NameOfJoinStyle(join)
ARGUMENTS
Tcl_Interp *interp (in) Interpreter to use for error reporting.
const char *string (in) String containing name of join style: one of "bevel", "miter", or "round".
int *joinPtr (out) Pointer to location in which to store X join style corresponding to string.
int join (in) Join style: one of JoinBevel, JoinMiter, JoinRound.
_________________________________________________________________DESCRIPTION
Tk_GetJoinStyle places in *joinPtr the X join style corresponding to string, which will be one of JoinBevel, JoinMiter, or JoinRound. Join
styles are typically used in X graphics contexts to indicate how adjacent line segments should be joined together. See the X documentation
for information on what each style implies.
Under normal circumstances the return value is TCL_OK and interp is unused. If string does not contain a valid join style or an abbrevia-
tion of one of these names, then an error message is stored in interp->result, TCL_ERROR is returned, and *joinPtr is unmodified.
Tk_NameOfJoinStyle is the logical inverse of Tk_GetJoinStyle. Given a join style such as JoinBevel it returns a statically-allocated
string corresponding to join. If join is not a legal join style, then "unknown join style" is returned.
KEYWORDS
bevel, join style, miter, round
TkTk_GetJoinStyle(3)