Sponsored Content
Operating Systems Linux Merge two files based on matching criteria Post 302982366 by Don Cragun on Wednesday 28th of September 2016 10:58:54 AM
Old 09-28-2016
You might try something like:
Code:
awk '
BEGIN {	FS = "[|]ÇÞ[|]"
	OFS = "|ÇÞ|"
}
NR == FNR {
	for(i = 2; i <= NF; i++)
		v[$1, i] = $i
	next
}
{	printf("%s%s", $1, (NF > 1) ? OFS : ORS)
	for(i = 2; i <= NF; i++)
		printf("%s%s", $i "=" v[$1, i], (NF > i) ? OFS : ORS)
}' Value_File Key_File

which with your sample data produces the output:
Code:
000|ÇÞ|Key_HF=Val_HF|ÇÞ|Key_FName		=Value_FName		
001|ÇÞ|Key_11=Val_11|ÇÞ|Sort_Key22=Sort_Val22|ÇÞ|Key_31=Val_31
002|ÇÞ|Key_12=Val_12|ÇÞ|Sort_Key23=Sort_Val23|ÇÞ|Key_32=Val_32
003|ÇÞ|Key_13=Val_13|ÇÞ|Sort_Key24=Sort_Val24|ÇÞ|Key_33=Val_33
050|ÇÞ|Key_15=Val_15|ÇÞ|Sort_Key25=Sort_Val25|ÇÞ|Key_34=Val_34
085|ÇÞ|Key_15=Val_15|ÇÞ|Sort_Key26=Sort_Val26|ÇÞ|Key_35=Val_35|ÇÞ|Key_41=|ÇÞ|Key_42=null
090|ÇÞ|Key_19=Val_19|ÇÞ|Sort_Key27=Sort_Val27
095|ÇÞ|Key_19=Val_19|ÇÞ|Sort_Key28=Sort_Val28
100|ÇÞ|Key_11=Val_11|ÇÞ|Sort_Key29=Sort_Val29
300|ÇÞ|Key_10=Val_10|ÇÞ|Sort_Key30=Sort_Val30
400|ÇÞ|Key_14=Val_14|ÇÞ|Sort_Key31=Sort_Val31
500|ÇÞ|Key_15=Val_15|ÇÞ|Sort_Key32=Sort_Val32
999|ÇÞ|Key_SS=Val_SS|ÇÞ|=

which matches what you said you wanted except for the 1st and last lines of the output. If you don' want extraneous <space> characters in the first line of your output, don't include them in both of your input files. And, if you don't want an empty field in the last line in your output, don't include an empty field in the last line of both of your input files.

As always, if you want to try this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk or nawk.
This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

deleting files and folders matching criteria

Hello, I'm spendind hours trying to figure out how a script could remove files and folders older than 30days in a given volume (/dataVolumes/Booba.1.0). Within this volume, all users have their personal folder that starts with "RC-..", so the script should skip them for deletion. I will... (4 Replies)
Discussion started by: H3001
4 Replies

2. AIX

Simultaneous searching for files (names matching certain criteria) in several directo

Hello everyone, My OS is AIX 5.2 I would like some help in getting command syntax that does the following: 1. Searches simultaneously several directories downward; 2. Checks every subdirectory in each directory (and so on...) for file names that contain certain characters such as “~”, start... (0 Replies)
Discussion started by: Hopeful
0 Replies

3. Shell Programming and Scripting

Script move and rename based on matching criteria

Hi all, i would like to create a script that move and rename files from all the subdirectories of a given directory to others subdirectories of the same directory based on "matching" criteria in the "from" and "to" parameters. Example: Begin script from /home/test/1_T_2008* move to... (3 Replies)
Discussion started by: braidomik
3 Replies

4. Shell Programming and Scripting

Archive files to different target folders based on criteria

Hi All, I am creting archive script in which i need to split the source file's to different target folder's based on the input file name first character. Input1.txt -- will contains file names that are needs to be Archive. Input1.txt A1213355 B2255666 C2254555 A6655444 C5566445 ... (2 Replies)
Discussion started by: kmsekhar
2 Replies

5. UNIX for Dummies Questions & Answers

How to select files based on a criteria?

I have a file..... xxx 2345 455 abc 345 555 cdf 456 777 fff 555 888 Now my requirement is, Say if, i want to select only those records prior to the record fff 555 888... how do i go about doing this in unix.... The fff would be hardcoded as it wud be fixed and everytime when i... (7 Replies)
Discussion started by: saggiboy10
7 Replies

6. UNIX for Dummies Questions & Answers

How to fetch files right below based on some matching criteria?

I have a requirement where in i need to select records right below the search criteria qwertykeyboard white 10 20 30 30 40 50 60 70 80 qwertykeyboard black 40 50 60 70 90 100 qwertykeyboard and white are headers separated by a tab. when i execute my script..i would be searching... (4 Replies)
Discussion started by: vinnu10
4 Replies

7. Shell Programming and Scripting

changing the file-name in a directory for all files matching a particular criteria

i have a directory which consist of multiple files out of which there are some files that has -e in their name. I want to write a script that will change all those file-name to -l example there are some files with name : file1-e.wav file2-e.wav file3-english-e.wav file-4-e.wav ... (3 Replies)
Discussion started by: mukulverma2408
3 Replies

8. Shell Programming and Scripting

Merge two files matching columns

Hi! I need to merge two files when col1 (x:x:x) matching and adds second column from file1.txt. # cat 1.txt aaa;a12 bbb;b13 ccc;c33 ddd;d55 eee;e11 # cat 2.txt bbb;b55;34444;d55 aaa;a15;35666;a44 I try with this awk and I get succesfully first column from 1.txt: # awk -F";"... (2 Replies)
Discussion started by: fhluque
2 Replies

9. Shell Programming and Scripting

How to merge two or more fields from two different files where there is non matching column?

Hi, Please excuse for often requesting queries and making R&D, I am trying to work out a possibility where i have two files field separated by pipe and another file containing only one field where there is no matching columns, Could you please advise how to merge two files. $more... (3 Replies)
Discussion started by: karthikram
3 Replies

10. Shell Programming and Scripting

How to merge two files with unique values matching.?

I have one script as below: #!/bin/ksh Outputfile1="/home/OutputFile1.xls" Outputfile2="/home/OutputFile2.xls" InputFile1="/home/InputFile1.sql" InputFile2="/home/InputFile2.sql" echo "Select hobby, class, subject, sports, rollNumber from Student_Table" >> InputFile1 echo "Select rollNumber... (3 Replies)
Discussion started by: Sharma331
3 Replies
SVK::Merge::Info(3)					User Contributed Perl Documentation				       SVK::Merge::Info(3)

NAME
SVK::Merge::Info - Container for merge ticket information SYNOPSIS
use SVK::Merge::Info; my $minfo = SVK::Merge::Info->new( $svk_merge_property ); DESCRIPTION
An "SVK::Merge::Info" object represents a collection of merge tickets, including repository UUID, path and revision. CONSTRUCTORS
new Takes a single argument with the value of an "svk:merge" property. METHODS
add_target Add a single SVK::Target::Universal or SVK::Path to the collection of merge tickets. del_target Remove a single SVK::Target::Universal or SVK::Path from the collection of merge tickets. remove_duplicated Takes a single SVK::Merge::Info object as an argument. Removes merge tickets which are present in the argument and for which the argument's revision is less than or equal to our revision. subset_of Takes a single SVK::Merge::Info object as an argument. Returns true if our set of merge tickets is a subset of the argument's merge tickets. Otherwise, returns false. is_equal Takes a single SVK::Merge::Info object as an argument. Returns true if our set of merge tickets is equal to argument's. Otherwise, returns false. union Return a new SVK::Merge::Info object representing the union of ourself and the SVK::Merge::Info object given as the argument. resolve verbatim as_string Serializes this collection of merge tickets in a form suitable for storing as an svk:merge property. TODO
Document the merge and ticket tracking mechanism. SEE ALSO
SVK::Editor::Merge, SVK::Command::Merge, Star-merge from GNU Arch perl v5.10.0 2008-08-04 SVK::Merge::Info(3)
All times are GMT -4. The time now is 01:36 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy