Sponsored Content
Full Discussion: Join two files
Top Forums Shell Programming and Scripting Join two files Post 302900775 by Ditto on Thursday 8th of May 2014 03:09:28 PM
Old 05-08-2014
Quote:
Originally Posted by vikus
I have 2 files:

fileA
Code:
AAA1:AAA2:AAA3:AAA_4:AAA5:AAA_6:AAA7:AAA_8
BBB1:BBB2:BBB3:BBB_4:BBB5:BBB-6
CCC1:CCC2:CCC3:CCC_4

fileB
Code:
AAA_4:XXX1:YYY1
BBB_4:XXX2:YYY2
CCC_4:XXX3:YYY3:ZZZ3
AAA_6:XXX4:YYY4
AAA_8:XXX5:YYY5

Result:
Code:
AAA1:AAA2:AAA3:AAA_4:XXX1:YYY1:AAA5:AAA_6:XXX4:YYY4:AAA7:AAA_8:XXX5:YYY5
BBB1:BBB2:BBB3:BBB_4:XXX2:YYY2:BBB5:BBB-6
CCC1:CCC2:CCC3:CCC_4:XXX3:YYY3:ZZZ3

If value from first column (fileA) exist in second file (fileB), copy everything from that line after the appearance of value from first column fileA.
Can some help with some solution, preferred awk programming.
Well, no awk involved, but this seems to work Smilie
(I'm not that good with awk myself ... *shrug* )

Code:
for i in `cat fileB`
do
  s=`echo $i | cut -d: -f1`
  sed "s/$s/$i/g" fileA > fileA.2
  mv fileA.2 fileA
done

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Join Files

Hi Gurus, I have to join two flat files based on two key field columns. I concatenated two key fields and i tried the join command. It is working fine. But, without using temporary files can't i use like this: join -t ':' `awk -F ":" '{ printf("%s%s:%s\n", $1,$2, $0) }' file1` `awk -F ":" '{... (2 Replies)
Discussion started by: choppas
2 Replies

2. Shell Programming and Scripting

join files

Hi , I want to join 2 files based on 2 column join condition. a11 john 2230 5000 a12 XXX 2230 A B 200 345 Expected O/P John 2230 5000 A B 200 I have tried this awk 'NR==FNR{a=$1;next}a&&sub($1,a)' a11 a12 > a13 (3 Replies)
Discussion started by: mohan705
3 Replies

3. Shell Programming and Scripting

join two files

Hi i have file f1 like: xx yy| 123 xx1 yy1| 1234 xx2 yy2|12345 f2 file like: xx yy| aaa xx1 yy1| bbb xx2 yy2|cccc i would like output is: xx yy| 123|aaa xx1 yy1| 1234|bbbb xx2 yy2|12345|cccc please help me on this........... (5 Replies)
Discussion started by: koti_rama
5 Replies

4. UNIX for Dummies Questions & Answers

Join 2 files with multiple columns: awk/grep/join?

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)
Discussion started by: InfoSeeker
3 Replies

5. Shell Programming and Scripting

Join two files

i have two files and i want to join the contents like: file a has content my name is i am i work at and file b has John sims 43 years old maximu ltd and i want to join the two files to get a third file with content reading my name is John sims i am 43 years old i work at... (2 Replies)
Discussion started by: tomjones
2 Replies

6. UNIX for Dummies Questions & Answers

how to join two files using "Join" command with one common field in this problem?

file1: Toronto:12439755:1076359:July 1, 1867:6 Quebec City:7560592:1542056:July 1, 1867:5 Halifax:938134:55284:July 1, 1867:4 Fredericton:751400:72908:July 1, 1867:3 Winnipeg:1170300:647797:July 15, 1870:7 Victoria:4168123:944735:July 20, 1871:10 Charlottetown:137900:5660:July 1, 1873:2... (2 Replies)
Discussion started by: mindfreak
2 Replies

7. UNIX for Dummies Questions & Answers

How to use the the join command to join multiple files by a common column

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)
Discussion started by: evelibertine
5 Replies

8. Shell Programming and Scripting

Join 2 files

I have file1.txt BGE179W1 BGE179W2 BGE179W3 BGE187W1 BGE187W2 BGE187W3 BGE194W1 BGE194W2 BGE194W3 BGE227W1 BGE227W2 BGE227W3 BGE288W1 BGE288W2 BGE288W3 BGE650W1 ---------- Post updated at 12:41 AM ---------- Previous update was at 12:39 AM ---------- (5 Replies)
Discussion started by: radius
5 Replies

9. Shell Programming and Scripting

Join two files

Hi, I have two files Files, FileA and FileB which are attached.Each row in the files have 8 tab delimited columns. The two files have to be compared and joined based on first two columns. The resulting file FileC should have: 1. if the data in the first two columns is same in both the... (3 Replies)
Discussion started by: mehar
3 Replies

10. Shell Programming and Scripting

Join, merge, fill NULL the void columns of multiples files like sql "LEFT JOIN" by using awk

Hello, This post is already here but want to do this with another way Merge multiples files with multiples duplicates keys by filling "NULL" the void columns for anothers joinning files file1.csv: 1|abc 1|def 2|ghi 2|jkl 3|mno 3|pqr file2.csv: 1|123|jojo 1|NULL|bibi... (2 Replies)
Discussion started by: yjacknewton
2 Replies
fmerge(1)						      General Commands Manual							 fmerge(1)

NAME
fmerge - merge files SYNOPSIS
fmerge [ option... ] basefile fileA fileB fmerge -Help fmerge -VERSion DESCRIPTION
The fmerge program is used to compare the changes between two different descendants of a base file, and creates an output file which con- tains both sets of changes. This is useful when two users both take the same version of a file and make independent edits to it, and then later want to create a file which contains both sets of edits. In such a use, the original file that both sets of edits is derived from is called the base file. The two files containing the edits are called file A and file B. The command: fmerge basefile fileA fileB -o outputfile produces the output file which contains the edits contained in file A and file B, based on the base file . If the -Output option was not used, or if no outputfile is specified, then the merged lines are typed to the standard output. The order of specifying file A and file B is usually unimportant. The fmerge program can also be used to remove earlier edits made to a module. To do this, make the version containing the edits you want to delete be the basefile. Make the version previous to the edit you want deleted be file A. Finally, make the most recent version of the file which contains the other edits (including the one you want deleted) be file B. Then the result of merging will be the newest version of the module minus the changes made by the edit you wanted removed. For example, if three successive versions of some module have the names edit10, edit11 and edit12, and you want the changes done by edit11 to be undone, but still want the changes done by edit12, then you use the command: fmerge edit11 edit10 edit12 -o outputfile While merging the two sets of edits, fmerge may discover conflicts. A conflict occurs when the same line of the base file is changed by both of the two sets of edits. The change can be due to new lines being inserted, lines being deleted, or both. When conflicts occur, the output file contains conflict identification lines, which are lines containing the string '/-/-/-/'. These lines indicate the region where the two sets of edits are incompatible. You must then edit the output file and remove these lines, and in addition correct the conflicts manually in order to produce the correct result. OPTIONS
The following options are understood: -Conflicts [ conflictfile ] Since conflicts due to deletions are invisible in the output file, and inserts do not specify which of the two edits inserted the lines, there is an alternative output format from the fmerge program. This output format describes what happens to each line of the base file, so that conflicts are easier to detect and fix. The command: fmerge basefile fileA fileB -c conflictfile produces the file describing the results of the merge in detail. If the -Conflicts option is specified without any conflictfile name, then the conflicts are send to the standard output. If there are conflicts, and the -Conflicts options is not specified, the fmerge program will exit with a status of 1. The conflict file contains lines which contain three characters and then some text. The first three characters describe what is happening to the base file at that point. These characters are the following: IA This line was inserted by file A. DA This line was deleted by file A. IB This line was inserted by file B. DB This line was deleted by file B. <blanks> This line is unchanged. X This is a conflict identification line. U There are unspecified unchanged lines here. Each set of conflicts is flagged by three identification lines. The first line indicates the beginning of the conflict, and speci- fies the line numbers for the base file and two divergent files. The second conflict identification line separates lines changed by file A from lines changed by file B. The third conflict identification indicates the end of the conflict. You can edit this conflict file to remove the conflicts. This involves deleting the conflict identification lines, and changing the conflicting lines as necessary to fix the conflict. While doing this, remember to leave three blank characters at the front of any new lines you insert while correcting the conflicts. When you are done, there should be no lines which begin with an 'X' in the file. All other lines can remain. Then you can use the command: fmerge conflictfile -o outputfile to create the new output file which has the desired data. Once again, if no -Output option or outputfile is used, the output is send to the standard output. -Unchanged number Besides physical conflicts, there can be logical conflicts. These are changes made to different lines in the base file such that the program is no longer correct. Such conflicts cannot be detected by a program, and so these must be checked manually. In order to make this process easier, the -Unchanged option can be used to reduce the size of the conflict file to only include regions near changed lines. This file can then be examined in order to detect possible logical conflicts. As an example, the command: fmerge basefile fileA fileB -c -u 3 will send to the standard output all changes made by either sets of edits, with only three unchanged lines surrounding each edit. When using the -Unchanged option, the conflict file will contain lines starting with 'U'. These represent unchanged lines, and the number following the letter is the number of unchanged lines. The resulting conflict file cannot be read to produce an output file because of the missing lines. If this is attempted, an error will be generated. It is possible to use both -Output and -Conflicts in the same command. Thus you can produce the output file which you hope is cor- rect, and also produce the conflict file which you can use to check for logical conflicts. -Verbose [ number ] This option can be specified with any other action, and outputs status information about the progress of the action. This is use- ful for debugging of problems, or just for amusement when the system is slow or a large file is being processed. It accepts a numeric argument to indicate the verbosity for output. The levels are as follows: 0 No output at all (except for errors). 1 Single-line output describing action (default). 2 Detailed status as action proceeds. -Failures number This option restricts the number of physical conflicts that are allowed before failing. This is used if you are not interested in the results if there are too many conflicts. -Help Give some help on how to use the fmerge program. -Ignore Ignore all conflicts. -Ignore_Identical_Conflicts The option may be used to suppress conflicts which make identical deletes, or identical inserts, or identical changes. This is often desirable when merging two source code branches. -VERSion Show what version of fmerge is running. All options may be abbreviated; the abbreviation is documented as the upper case letters, all lower case letters and underscores (_) are optional. You must use consecutive sequences of optional letters. All options are case insensitive, you may type them in upper case or lower case or a combination of both, case is not important. For example: the arguments "-help, "-HELP" and "-h" are all interpreted to mean the -Help option. The argument "-hlp" will not be under- stood, because consecutive optional characters were not supplied. Options and other command line arguments may be mixed arbitrarily on the command line. The GNU long option names are understood. Since all option names for fmerge are long, this means ignoring the extra leading '-'. The "-option=value" convention is also understood. FILE NAME EXPANSION
As a convenience, if a pathname begins with a period and a environment variable exists with that name, then the value of the environment variable will be used as the actual pathname. For example, if a environment variable of .FOO has the value this.is.a.long.name, then the command fmerge -o .FOO is actually equivilant to the command fmerge -o this.is.a.long.name If you want to prevent the expansion of a pathname which begins with a period, then you can use an alternate form for the pathname, as in: fmerge -o ./.FOO BINARY FILES
In general, fmerge can handle all text files you throw at it, even international text with unusual encodings. However, fmerge is unable to cope elegantly with files which contain the NUL character. The fcomp(1) program simply prints a warning, and continues, you need to know that it converts NUL characters into an 0x80 value before performing the comparison. The fmerge(1) program also converts the NUL character to an 0x80 value before merging, after a warning, and any output file will contain this value, rather than the original NUL character. The fhist(1) program, however, generates a fatal error if any input file contains NUL characters. This is intended to protect your source files for unintentional corruption. Use -BINary for files which absolutely must contain NUL characters. EXIT STATUS
The fmerge program will exit with a status of 1 on any error. The fmerge program will only exit with a status of 0 if there are no errors. REFERENCES
This program is based on the algorithm in An O(ND) Difference Algorithm and Its Variations, Eugene W. Myers, TR 85-6, 10-April-1985, Department of Computer Science, The Uni- versity of Arizona, Tuscon, Arizona 85721. See also: A File Comparison Program, Webb Miller and Eugene W. Myers, Software Practice and Experience, Volume 15, No. 11, November 1985. COPYRIGHT
fmerge version 1.18.D001 Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 Peter Miller; This program is derived from a work Copyright (C) 1990 David I. Bell. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MER- CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. AUTHORS
Peter Miller Web: http://miller.emu.id.au/pmiller/ //* E-Mail: pmiller@opensource.org.au David I. Bell Web: http://www.canb.auug.org.au/~dbell E-Mail: dbell@canb.auug.org.au Reference Manual FHist fmerge(1)
All times are GMT -4. The time now is 06:16 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy