Search and Replace between two files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Search and Replace between two files
# 1  
Old 07-06-2009
Search and Replace between two files

Hi all-
I've got 2 files: One is the final results and one is a result set from a query.

In the final results files I have placeholder strings in there that need to be replaced by the corresponding strings from the query file.

So File#1 (FINAL RESULTS)
Code:
LINEID   CLIENT   ID       REP     DATE              NUM    TYPE
3452a   000001   IDENT   54787  STARTDATE    NUM      TYPCODE
asd54   000001   IDENT   54799  STARTDATE    NUM      TYPCODE
asd6a   000231   IDENT   55781  STARTDATE    NUM      TYPCODE
sdf57   004578   IDENT   87787  STARTDATE    NUM      TYPCODE
sd5f6   004578   IDENT   94787  STARTDATE    NUM      TYPCODE
df57r   000044   IDENT   34787  STARTDATE    NUM      TYPCODE
jhe21   007777   IDENT   55777  STARTDATE    NUM      TYPCODE
jra48   000111   IDENT   54787  STARTDATE    NUM      TYPCODE

File#2 (Look up)
Code:
CLIENT   ID       DATE              NUM    TYPE
000001   222     6/30/09          A23       I
000231   352     6/3/09           A26       P
004579   272     6/1/09           A24       A
000044   992     5/20/09          A23       I
007777   228     1/30/09          A27       A
000111   201     4/27/09          A23       I

So I want to search for matching the CLIENT value and replace the placeholders in file #1(IDENT, STARTDATE,NUM,TYPCODE) with the correct values from file #2

Any ideas?

Last edited by vgersh99; 07-06-2009 at 06:51 PM.. Reason: code
# 2  
Old 07-06-2009
if you do not know the sequence of your ID/DATE/..., and have to base on header sequence to decide, then below complicated perl may help you some.

But is you already know the sequence of header part and can use before script, then modify below accordingly to a easy one.

Code:
my(%hash,%result,%hash1);
open $fh,"<","lookup.txt';
while(<$fh>){
	chomp;
	my @tmp=split;
	if($.==1){
		for(my $i=1;$i<=$#tmp;$i++){
			$hash{$tmp[$i]}=$i;
		}
	}
	else{
		my $client=$tmp[0];
		for(my $j=1;$j<=$#tmp;$j++){
			$result{$client}->{$j}=$tmp[$j];
		}
	}
}
close $fh;
open $fh,"<","final.txt";
while(<$fh>){
	chomp;
	my @tmp=split;
	for(my $i=2;$i<=$#tmp;$i++){
		if($.==1){
			$hash1{$i}=$tmp[$i];
		}
		else{
			$tmp[$i]=($result{$tmp[1]}->{$hash{$hash1{$i}}})?$result{$tmp[1]}->{$hash{$hash1{$i}}}:$tmp[$i];
		}
	}
	print join " ", @tmp;
	print "\n";
}

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Search in one type of files and replace

I am not sure how to search and replace the word in the few specific files. I need to search and replace word in only the name containing pepsi in the filename. (12 Replies)
Discussion started by: ramkumar15
12 Replies

2. Shell Programming and Scripting

Search replace with awk using 2 files

I have a bit of a complex problem that I would like to solve with awk. It is essentially a 2-part problem. I have a large directory of files with the same format, each with 266 lines. The first 206 lines of each file are filled with attribute information. Then the following 60 lines consist... (4 Replies)
Discussion started by: owwow14
4 Replies

3. Shell Programming and Scripting

Search and Replace in multiple files

Hello, I have hundreds of files in which I need to change email address. Here is what I am trying to do: 1. All text files are in a directory "a" 2. In the text file, I want to replace email address for preparer. All these lines start with {{PreparerEmail and end with }}. The email... (3 Replies)
Discussion started by: cartrider
3 Replies

4. Shell Programming and Scripting

Keyword search/replace for two text files?

What is the best way (bash/awk/sed?) to read in two text files and do a keyword search/replace? file1.txt: San Francisco Los Angeles Seattle Dallas file2.txt: I love Los Angeles. Coming to Dallas was the right choice. San Francisco is fun. Go to Seattle in the summer. ... (3 Replies)
Discussion started by: pxalpine
3 Replies

5. Programming

Search and replace in two different files

Hi there, i got the following problem. i need a bash script to correct e-mail addresses in an csv. i got a huge csv like this A B C D heiner.holber.somewhere.ch heiner holber heiner.holber@somewhere.ch So A is the wrong... (8 Replies)
Discussion started by: molker
8 Replies

6. UNIX for Dummies Questions & Answers

Search and replace across files

Hi All, HP-UX oradev3 B.11.11 U 9000/800 3251073457 I have following files all contains text like "919642990137@". I need to search this text across all files and replace it with something like "919717298765@". I was wondering, how to accomplish this task? cpmprod_status.sh... (8 Replies)
Discussion started by: alok.behria
8 Replies

7. Shell Programming and Scripting

Search and replace string in files

I'm trying to remove the following string from several files. <img heigth="1" width="1" border="0" src="http://myteenmovies.net/t.php?id=5540372">I'm using the following script #!/bin/bash # This script will search and replace all regular files for a string # supplied by the user and... (1 Reply)
Discussion started by: d13g0sv
1 Replies

8. Shell Programming and Scripting

Search and replace text in many files

Hello, I am very new to Linux and am trying to find a way for following problem. I have a number of files in a folder as Export000.dat, Export001.dat ..and so on. Each file has a string field 'Absolute velocity'. I want it to be replaced by 'Pixel shift' in all the files. I tried something like... (4 Replies)
Discussion started by: chirag.joshi
4 Replies

9. Shell Programming and Scripting

search and replace in many files

I have a directory full of files. Most of the code in the files is the same accept for a few parameter values. I want to remove hard coded values and replace it with a parameter that I can pass. This is oracle pl/sql anonymous blocks. so the code is similiar to this function myfunc (p_myvar ... (1 Reply)
Discussion started by: guessingo
1 Replies

10. Shell Programming and Scripting

fast search and replace in all files

Hi I need to find one string in all files and replace tht string with blank space and need to redirect all the files into the same directory again. now i am using find ./ -name "*.dmp" | xargs perl -pi -e 's/\\N//g' | sed 's/.$//g' but now its not redirrecting properly . its taking... (21 Replies)
Discussion started by: dbsurf
21 Replies
Login or Register to Ask a Question

Featured Tech Videos