Cute puzzle... Note that the output you said you wanted uses an output field separator of period (instead of comma) between the 1st two output fields for lines read from File 1. I assume that was unintentional and that you really wanted commas separating all output fields. To make processing easier, since you said that field headers are to be treated as case insensitive, the following code prints all output file headings using upper case letters.
Note that although this was tested with two input files, it will work with zero or more input files. And, to make your life easier, I strongly encourage you to avoid putting spaces in filenames.
You could try something like:
With your sample input files, it produces the output:
If you reverse the order of the input files you feed this program, you would get the output:
If someone else wants to try this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk or nawk.
I have 2 files pipe delimted and want to merge them based on a key
e.g file 1
123$aaa$yyy$zzz
345$xab$yzy$zyz
456$sss$ttt$foo
799$aaa$ggg$dee
file 2
123$hhh
345$ddd
456$xxx
888$zzz
so if the key is the first field, and the result should be the common key between file 1 and 2 (6 Replies)
Help in writing a script using sed which updates fileOne with the contents from fileTwo
Example:
Contents of fileOne
1,111111
2,897823
3,235473
4,222222
Contents of fileTwo
1,111111,A,1,2
4,222222,A,2,2
5,374632,A,3,2
6,374654,A,4,2
Final File should be:
1,111111,A,1,2... (9 Replies)
Hello everyone!!
I am not completely new to shell script but I havent been able to find the answer to my problem and I'm sure there are some smart brains here up for the challenge :D.
I have several CSV files that I need to combine into one, but I also need to know where each row came from.... (7 Replies)
Hi
I have multiple files each with two columns and I need to combine all those file into a tab delimited file. (multiple entry with same name separated by a comma)
The content of the files are as follows:
---
file1.txt:
name var1
aaa xx
aaa gg
bbb yy
ddd zz
---
file2.txt
... (8 Replies)
I have lot of csv file collected from script like below :
Name of files (some examples) there are thousands of it:
192.168.0.123_251_18796_1433144473.csv
192.168.0.123_251_18796_1433144772.csv
192.168.0.123_251_18796_1433145073.csv
192.168.0.123_251_18796_1433145372.csvContent of each... (5 Replies)
I am trying to merge all csv files from source path into one single csv file in target. but getting error message:
hadoop fs -cat /user/hive/warehouse/stage.db/PK_CLOUD_CHARGE/TCH-charge_*.csv > /user/hive/warehouse/stage.db/PK_CLOUD_CHARGE/final/TCH_pb_charge.csv
getting error message:... (0 Replies)
Hi all,
i need help.
I have two csv files with a huge amount of data.
I need the first column of the first file, to be compared with the data of the second, to have at the end a file with the data not present in the second file.
Example
File1: (only one column)
profile_id
57036226... (11 Replies)
Example:
I have files in below format
file 1:
zxc,133,joe@example.com
cst,222,xyz@example1.com
File 2 Contains:
hxd
hcd
jws
zxc
cst
File 1 has 50000 lines and file 2 has around 30000 lines :
Expected Output has to be :
hxd
hcd
jws (5 Replies)
I have three files with similar pattern i need to merge all the coloumns side by side from all three files according to the first coloumn example as shown below
I mentioned 5 coloumns only in example but i have around 15 coloumns in each file.
file1:
Name,Samples,Error,95RT,90RT... (4 Replies)
Discussion started by: Raghuram717
4 Replies
LEARN ABOUT OPENDARWIN
join
JOIN(1) BSD General Commands Manual JOIN(1)NAME
join -- relational database operator
SYNOPSIS
join [-a file_number | -v file_number] [-e string] [-o list] [-t char] [-1 field] [-2 field] file1 file2
DESCRIPTION
The join utility performs an ``equality join'' on the specified files and writes the result to the standard output. The ``join field'' is
the field in each file by which the files are compared. The first field in each line is used by default. There is one line in the output
for each pair of lines in file1 and file2 which have identical join fields. Each output line consists of the join field, the remaining
fields from file1 and then the remaining fields from file2.
The default field separators are tab and space characters. In this case, multiple tabs and spaces count as a single field separator, and
leading tabs and spaces are ignored. The default output field separator is a single space character.
Many of the options use file and field numbers. Both file numbers and field numbers are 1 based, i.e. the first file on the command line is
file number 1 and the first field is field number 1. The following options are available:
-a file_number
In addition to the default output, produce a line for each unpairable line in file file_number.
-e string
Replace empty output fields with string.
-o list
The -o option specifies the fields that will be output from each file for each line with matching join fields. Each element of list
has the either the form 'file_number.field', where file_number is a file number and field is a field number, or the form '0' (zero),
representing the join field. The elements of list must be either comma (``,'') or whitespace separated. (The latter requires quot-
ing to protect it from the shell, or, a simpler approach is to use multiple -o options.)
-t char
Use character char as a field delimiter for both input and output. Every occurrence of char in a line is significant.
-v file_number
Do not display the default output, but display a line for each unpairable line in file file_number. The options -v 1 and -v 2 may be
specified at the same time.
-1 field
Join on the field'th field of file 1.
-2 field
Join on the field'th field of file 2.
When the default field delimiter characters are used, the files to be joined should be ordered in the collating sequence of sort(1), using
the -b option, on the fields on which they are to be joined, otherwise join may not report all field matches. When the field delimiter char-
acters are specified by the -t option, the collating sequence should be the same as sort(1) without the -b option.
If one of the arguments file1 or file2 is ``-'', the standard input is used.
DIAGNOSTICS
The join utility exits 0 on success, and >0 if an error occurs.
COMPATIBILITY
For compatibility with historic versions of join, the following options are available:
-a In addition to the default output, produce a line for each unpairable line in both file 1 and file 2.
-j1 field
Join on the field'th field of file 1.
-j2 field
Join on the field'th field of file 2.
-j field
Join on the field'th field of both file 1 and file 2.
-o list ...
Historical implementations of join permitted multiple arguments to the -o option. These arguments were of the form
'file_number.field_number' as described for the current -o option. This has obvious difficulties in the presence of files named
'1.2'.
These options are available only so historic shellscripts don't require modification and should not be used.
STANDARDS
The join command conforms to IEEE Std 1003.1-2001 (``POSIX.1'').
SEE ALSO awk(1), comm(1), paste(1), sort(1), uniq(1)BSD April 18, 2002 BSD