File Replacement Help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting File Replacement Help
# 1  
Old 11-30-2011
Data File Replacement Help

Hi all,

I have two files, one is a base file and the other is a dependency file.

I need to replace a section in the base file (File A) with a section from the dependency file (File B), for example:

File A:
...
Code:
<TagName>
  <TagA>MyBaseFile</TagA>
  <TagB>MyBaseFileID</TagB>
</TagName>
<TagName>
  <TagA>Other</TagA>
  <TagB>OtherID</TagB>
</TagName>

...


I need to replace the 'TagName' section (in bold) with the section extracted from File B:

...
Code:
<TagName>
  <TagA>MyFile</TagA>
  <TagB>12345</TagB>
</TagName>

...

so File A should look like:

...
Code:
<TagName>
  <TagA>MyFile</TagA>
  <TagB>12345</TagB>
</TagName>
<TagName>
  <TagA>Other</TagA>
  <TagB>OtherID</TagB>
</TagName>

...


Any idea how this can be achieved in Shell/AWK or Perl (only basic Perl as I wont have the ability to upload new libraries to a server).

Moderator's Comments:
Mod Comment Please use code tags!

Last edited by muay_tb; 11-30-2011 at 08:58 AM..
# 2  
Old 11-30-2011
Invoke this with the dependecy file (file-B) as the first argument and the base file (file-A) as stdin or the second and subsequent arguments:
Code:
undef $/;

# slurp in dependency file

my $depfile = shift(@ARGV);

open FH, '<', $depfile or die $depfile;
my $tag = <FH>;
close FH;

print $tag;

# slurp in the base file

$_ = <>;

# replace section with the dependecy file

s{<TagName>\s*<TagA>MyBaseFile</TagA>\s*<TagB>MyBaseFileID</TagB>\s*</TagName>\s*}{$dep}ms;

print;

# 3  
Old 11-30-2011
Quote:
Originally Posted by m.d.ludwig
Invoke this with the dependecy file (file-B) as the first argument and the base file (file-A) as stdin or the second and subsequent arguments:
Code:
undef $/;

# slurp in dependency file

my $depfile = shift(@ARGV);

open FH, '<', $depfile or die $depfile;
my $tag = <FH>;
close FH;

print $tag;

# slurp in the base file

$_ = <>;

# replace section with the dependecy file

s{<TagName>\s*<TagA>MyBaseFile</TagA>\s*<TagB>MyBaseFileID</TagB>\s*</TagName>\s*}{$dep}ms;

print;

Hi Ludwig!

Thanks for the reply.

Will this still work where File A has multiple <TagName> sections? will it only replace one <TagName> section that I am concerned about?

File A has numerous <TagName> sections, I only want to replace one (could appear anywhere) where the <TagName><TagA> section has a value of say 'MyBaseFile' etc...
# 4  
Old 11-30-2011
What I supplied will replace the first instance of <TagA>MyBaseFile</TagA> in the file. Depending on how complicated your files actually are (I assume that what you supplied was a sample), you may want to look at xml parsing modules which can give you very fine control over what is selected..
# 5  
Old 12-01-2011
Quote:
Originally Posted by m.d.ludwig
What I supplied will replace the first instance of <TagA>MyBaseFile</TagA> in the file. Depending on how complicated your files actually are (I assume that what you supplied was a sample), you may want to look at xml parsing modules which can give you very fine control over what is selected..
Hi Ludwig,

My base file looks like this:

Code:
<TagName>
<TagA>/MyBasePath/MyBaseFile/</TagA>
<TagB>MyBasePath/MyBaseFile/FileA</TagB>
</TagName>
<TagName>
<TagA>/MyBasePath/MyBaseFile/</TagA>
<TagB>MyBasePath/MyBaseFile/FileB</TagB>
</TagName>
<TagName>
<TagA>/MyBasePath/MyBaseFile/</TagA>
<TagB>MyBasePath/MyBaseFile/FileC</TagB>
</TagName>

My dependency file looks like this:

Code:
<TagName>
<TagA>/MyDepPath/MyDepFile/</TagA>
<TagB>MyDepPath/MyDepFile/FileA</TagB>
</TagName>
<TagName><TagA>/MyDepPath/MyDepFile/</TagA>
<TagB>MyDepPath/MyDepFile/FileB</TagB>
</TagName>
<TagName>
<TagA>/MyDepPath/MyDepFile/</TagA>
<TagB>MyDepPath/MyDepFile/FileC</TagB>
</TagName>


I need to replace the section in bold only in the base file by copying the dependency section into the base file section.
# 6  
Old 12-01-2011
How do you select which section in the base file is to be replaced by which section in the dependency file?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replacement Query in a file

Hi All, Please can you help me with below, i have a file with records ( eg of one record below) Record R1 - The field separtaor between records is | (Pipe) |123|Mukesh\r\n|Vivek"sharma| Now i want to do the following for each record in the file if there is any field ( lets say field... (3 Replies)
Discussion started by: mad_man12
3 Replies

2. Shell Programming and Scripting

Replacement of variable by their content in a file

Dear all, I have a "SQL request" in a file: that request include different "host variable" and I would like to substitute the different "host variable" by their respective content before executing the request. For example: $ echo $SHELL /bin/bash $ cat dae2.txt DELETE FROM ... (11 Replies)
Discussion started by: dae
11 Replies

3. Shell Programming and Scripting

Sed: how to use file contents in replacement string

I want to replace a string by contents of file. I am trying the following sed command: cat sample | sed "s^<enter description here>^`cat details`^" But it is not working. a=`cat details` and using $a will not help since it will affect the whitespaces. What am I missing in the above sed... (5 Replies)
Discussion started by: anand_bh
5 Replies

4. UNIX for Dummies Questions & Answers

File size changes on replacement of certain numbers

I had a doubt regarding how the file size changes and needed some advice on the same So I have this file say abc.txt.. Size was 10000. Now inside the file when I go and I replace all the number 7 numerals with number 4 file size changed to 9984. Any idea why and how ?? (8 Replies)
Discussion started by: sidnow
8 Replies

5. Shell Programming and Scripting

Conditional replacement of columns in a text file

Hello scriping expert friends, I have 2 requirements on replacing fields of text files: I have lot of data with contents like below: Requirement-1: The digit after 0 should always be changed to 1 (3 Replies)
Discussion started by: magnus29
3 Replies

6. Shell Programming and Scripting

sed replacement in file when line is in a variable

Hi, I have a file where I want to replace the 15th field separated by comma, only on specific lines matching lots of different conditions. I have managed to read the file line by line, within the loop my line is held in a variable called $line I assume this will be using sed (maybe... (5 Replies)
Discussion started by: jpt123
5 Replies

7. Shell Programming and Scripting

Unix file pattern check and replacement

HI Guys , Using UNIX ,I intend to check with correct file pattern Access_file_Record.YYYYMM in path /tmp If the file exist in correct format come out from code . If not found check with different file patterns for same month period YYYYMM ( Like Access_file_Record_YYYYMM.txt or... (8 Replies)
Discussion started by: Perlbaby
8 Replies

8. Shell Programming and Scripting

sed replacement in unicode file

Hi there, I have a file generated by a windows registry (it's unicode) and can't get to do some replacements on it. I want to join lines that end with backslash with the next one. santiago@ks354286:~$ cat win.reg ÿþWindows Registry Editor Version 5.00 ... (10 Replies)
Discussion started by: chebarbudo
10 Replies

9. Shell Programming and Scripting

Replacement of text in a file

Hi , I have some data in my file(properties.txt) like this. # agent.properties agent.dmp.Location= agent.name= I need to relpace the agent.dmp.location with agent.dmp.Location = /opt/VRTS/vxvm I am using the follwing to replace the string AGENT_NAME=snmp... (2 Replies)
Discussion started by: raghu.amilineni
2 Replies

10. UNIX for Dummies Questions & Answers

finding a numeric value in a file for replacement

thank u optimus,but one more dout..it might be silly..how do i get the value in the file that should be replaced..while running the script..its an numeric value..that i want to change.. when i used sed for replacement ie. sed s/521000/100/p with print option it is printing... (4 Replies)
Discussion started by: Babu
4 Replies
Login or Register to Ask a Question