Find and replace value using a key from other file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find and replace value using a key from other file
# 15  
Old 11-03-2012
dear ctsgnb

I noticed that if there is more that one line to change in the same file imput, It changes only one?.
example
sw1135g.sps 2657.00 7305.00 2 1
sw1135g.sps 2650.00 7307.00 2 1 sw1135g.xps 2657.00 7305.00 2 1 sw1135g.xps 2650.00 7307.00 2 1
in the output file there is only one change for
sw1135g.sps 2657.00 7305.00 2 1
but not for

sw1135g.sps 2650.00 7307.00 2 1
How I can maby files in the same file

---------- Post updated at 01:37 PM ---------- Previous update was at 01:35 PM ----------

dear ctsgnb

I noticed that if there is more that one line to change in the same file imput, It changes only one?.
example
Code:
sw1135g.sps 2657.00   7305.00 2 1
sw1135g.sps 2650.00   7307.00 2 1
sw1135g.xps 2657.00   7305.00 2 1
sw1135g.xps 2650.00   7307.00 2 1

in the output file there is only one change for
Code:
sw1135g.sps 2657.00   7305.00 2 1

but not for

Code:
sw1135g.sps 2650.00   7307.00 2 1

How I can change many files in the same file

---------- Post updated at 01:37 PM ---------- Previous update was at 01:37 PM ----------

dear ctsgnb

I noticed that if there is more that one line to change in the same file imput, It changes only one?.
example
Code:
sw1135g.sps 2657.00   7305.00 2 1
sw1135g.sps 2650.00   7307.00 2 1
sw1135g.xps 2657.00   7305.00 2 1
sw1135g.xps 2650.00   7307.00 2 1

in the output file there is only one change for
Code:
sw1135g.sps 2657.00   7305.00 2 1

but not for

Code:
sw1135g.sps 2650.00   7307.00 2 1

How I can change many files in the same file
# 16  
Old 11-03-2012
As is, the code does not handle this case, it needs to be adapted (only one line per file in datatochange.txt, the input file must be different from eatchother)
# 17  
Old 11-03-2012
But if I want to keep only one output file with many changes done in the same file.. How I can do it?. There not solution??

Thanks
# 18  
Old 11-03-2012
If you want only one output, just modify the name of the target file so that it doesn't vary with the name of the input file which is very simple to do :

Code:
awk '{F=$1;e=(F~/sps$/)?" ":z;s=$2" "$3;p=$4;r=$5; 
while(getline <F){
sub(s e p,s e r) 
print $0 >> output
} 
close (F) 
}' datatochange.txt

This User Gave Thanks to ctsgnb For This Post:
# 19  
Old 11-03-2012
DEAR CSTGNB

I WOULD LIKE TO HAVE ONE FILE FOR EACH FILE ,, BUT IF IA HAVE MAY CHANGES TO DO IN ONE FILE , WHAT IS THE SOLUTION>.

REGARDS
# 20  
Old 11-03-2012
Thanks not to use uppercase, this is kind of annoying.

You could give a try to this quick solution:

Code:
awk '{F=$1;a[F];e=(F~/sps$/)?" ":z;s=$2" "$3;p=$4;r=$5
print "s/" s e p "/" s e r "/" >> F".sed"
}END{
for(i in a){print "sed -f "i".sed "i " >>"i".new">>"change2run"}
}' datatochange.txt

1) run the code above
2) then run the generated script "change2run"

This should generate *.new files with all the substitutions done in it.
and "datatochange.txt" can have multiple line with a same filenames, this code should be able to handle it properly

Last edited by ctsgnb; 11-03-2012 at 09:00 PM..
This User Gave Thanks to ctsgnb For This Post:
# 21  
Old 11-04-2012
Dear ctsgnb

Thansk a lot for four help,, and soory for the uppercase letters,, I didn't notice that..

Regards

---------- Post updated at 06:45 AM ---------- Previous update was at 01:52 AM ----------

Dear ctsgnb

the code is working perfect, as you say I got all the substitutions in the file .new..
But please can you advise me why , when I run the script change2run
give me this msg.

> change2run
Code:
awk: change2run:3: awk '{F=$1;a[F];e=(F~/sps$/)?"  ":z;s=$2"   "$3;p=$4;r=$5;
awk: change2run:3:     ^ invalid char ''' in expression


The code is as following
Code:
awk -f change2run

awk '{F=$1;a[F];e=(F~/sps$/)?"  ":z;s=$2"   "$3;p=$4;r=$5;
print "s/" s e p "/" s e r "/" >> F".sed"
}END{
for(i in a){print "sed -f "i".sed "i " >>"i".new">>"change2run"}
}' datatochange.txt

and I notice that in the file datatochange.txt..
there is many new enters

Code:
sed -f sw1166g.xps.sed sw1166g.xps >>sw1166g.xps.new
sed -f sw1163g.sps.sed sw1163g.sps >>sw1163g.sps.new
sed -f sw1152g.xps.sed sw1152g.xps >>sw1152g.xps.new
sed -f sw1132g.sps.sed sw1132g.sps >>sw1132g.sps.new
sed -f sw1129g.sps.sed sw1129g.sps >>sw1129g.sps.new
sed -f sw1153g.sps.sed sw1153g.sps >>sw1153g.sps.new
sed -f sw1136g.sps.sed sw1136g.sps >>sw1136g.sps.new
sed -f sw1148g.sps.sed sw1148g.sps >>sw1148g.sps.new
sed -f sw1137g.xps.sed sw1137g.xps >>sw1137g.xps.new
sed -f sw1144g.xps.sed sw1144g.xps >>sw1144g.xps.new
sed -f sw1130g.xps.sed sw1130g.xps >>sw1130g.xps.new
sed -f sw1131g.sps.sed sw1131g.sps >>sw1131g.sps.new
sed -f sw1163g.xps.sed sw1163g.xps >>sw1163g.xps.new
sed -f sw1132g.xps.sed sw1132g.xps >>sw1132g.xps.new
sed -f sw1129g.xps.sed sw1129g.xps >>sw1129g.xps.new
sed -f sw1164g.sps.sed sw1164g.sps >>sw1164g.sps.new
sed -f sw1153g.xps.sed sw1153g.xps >>sw1153g.xps.new
sed -f sw1147g.sps.sed sw1147g.sps >>sw1147g.sps.new
sed -f sw1136g.xps.sed sw1136g.xps >>sw1136g.xps.new
sed -f sw1148g.xps.sed sw1148g.xps >>sw1148g.xps.new
sed -f sw1166g.sps.sed sw1166g.sps >>sw1166g.sps.new
sed -f sw1152g.sps.sed sw1152g.sps >>sw1152g.sps.new
sed -f sw1131g.xps.sed sw1131g.xps >>sw1131g.xps.new
sed -f sw1137g.sps.sed sw1137g.sps >>sw1137g.sps.new
sed -f sw1164g.xps.sed sw1164g.xps >>sw1164g.xps.new
sed -f sw1147g.xps.sed sw1147g.xps >>sw1147g.xps.new
sed -f sw1144g.sps.sed sw1144g.sps >>sw1144g.sps.new
sed -f sw1130g.sps.sed sw1130g.sps >>sw1130g.sps.new

Thanks for your cooperation
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Need to find and replace in a file

Hi All, I am having below sample data in a file. I need to find all the line form this file with word ABC and i need to replace the characters at position 120 which is "CO:BOGFDUI"(30chars) in the lines with blank space. I have tried using grep to find the word with ABC (grep ABC filename),... (3 Replies)
Discussion started by: abhi_123
3 Replies

2. Shell Programming and Scripting

Find Key and replace value

Hi, I am new to shell scripting. I have a config file where key and value is stored as below. In my shell script, I want to look for Test ID in the config file and replace the value 1 with another value stored in a variable. How would I do that ? <Config Key="Test ID" Value="1"/> I... (6 Replies)
Discussion started by: Vishnuvardhanh
6 Replies

3. Shell Programming and Scripting

Perl script to read string from file#1 and find/replace in file#2

Hello Forum. I have a file called abc.sed with the following commands; s/1/one/g s/2/two/g ... I also have a second file called abc.dat and would like to substitute all occurrences of "1 with one", "2 with two", etc and create a new file called abc_new.dat sed -f abc.sed abc.dat >... (10 Replies)
Discussion started by: pchang
10 Replies

4. Shell Programming and Scripting

Shell Script @ Find a key word and If the key word matches then replace next 7 lines only

Hi All, I have a XML file which is looks like as below. <<please see the attachment >> <?xml version="1.0" encoding="UTF-8"?> <esites> <esite> <name>XXX.com</name> <storeId>10001</storeId> <module> ... (4 Replies)
Discussion started by: Rajeev_hbk
4 Replies

5. Shell Programming and Scripting

Find and Replace in File

Legends, I have a file /tmp/list.txt I want to find "/bin/" and replace it with "/log/" I tried the follwoing but no luck Sandy: /tmp> perl -pi -e 's/\/bin\/\/log\/' /tmp/list.txt >> /tmp/try Substitution pattern not terminated at -e line 1. AND, Sandy: /tmp> perl -pi -e... (2 Replies)
Discussion started by: sdosanjh
2 Replies

6. Shell Programming and Scripting

C Shell problem: using a key from one file to find data in another

I've never written scripts (just switched from Ada to C++). I have a book that's over my head and a few examples, other then that I'm floundering. Everything here at work is being done in C Shell. None of the C++ programmers are experienced in shell scripting. I have a data file with the... (2 Replies)
Discussion started by: bassmaster
2 Replies

7. Shell Programming and Scripting

Find and replace in a gz file

Is there a way to do a find and replace in a .gz file in a single script ? I can always unzip, find and replace and then zip it again but would hate to do this everytime. Thanks ! Vivek (1 Reply)
Discussion started by: vashah
1 Replies

8. Shell Programming and Scripting

Find and replace in a file

Hi everyone, I am new to the world of shell script programming. I have a file named Fnd1.txt which has the contents as below. I need to replace the \t with the tab space. Can any one help me to write a perl scipt for this. USA45V1\tG\t341029 USAV1T1\tG\t450545 USAREJ1\tG\t572645... (5 Replies)
Discussion started by: vinay123
5 Replies

9. Shell Programming and Scripting

how to replace a text inside a file based on a xml key

<c-param> <param-name>Number</param-name> <param-value>22</param-value> <description>my house number</description> </c-param> <c-param> <param-name>Address</param-name> ... (4 Replies)
Discussion started by: reldb
4 Replies

10. UNIX for Dummies Questions & Answers

Find replace within a file?

I build several files by using the cut command to grab select fields(columns) from a really bid csv file. Each file is one column of data. I then put them together using paste command. Here is the code built in tcsh: cut -d , -f 1 some.csv > 1.csv cut -d , -f 10 some.csv > 10.csv paste 1.csv... (2 Replies)
Discussion started by: yankee428
2 Replies
Login or Register to Ask a Question