Replacing strings in various files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replacing strings in various files
# 1  
Old 02-26-2013
Replacing strings in various files

i'm trying to figure out the easiest way to replace a string:

Code:
pineapple  pineapple-reg
basketball basketball-reg
football foot-reg-ball

i'm storing the above in a file called wordstoreplace.txt

for each line above, the word in the first column is to be replaced by the word in the second column. is this possible?

i have 5 different files that have in them the words in the first column.

lets say the 5 files are called: file1, file2, file3, file4, file5


i want to replace the first column words in all 5 files.
Code:
while read line
do
firstcolword=$(echo $line | awk '{print $1}')
seccolword=$(echo $line | awk '{print $2}')
cat file1 | sed 's/$firstcolword/$seccolword/g' > file1-new
cat file2 | sed 's/$firstcolword/$seccolword/g' > file2-new
cat file3 | sed 's/$firstcolword/$seccolword/g' > file3-new
cat file4 | sed 's/$firstcolword/$seccolword/g' > file4-new
cat file5 | sed 's/$firstcolword/$seccolword/g' > file5-new
done < wordstoreplace.txt

i just know the above isn't efficient. any ideas?
# 2  
Old 02-26-2013
Code:
while read firstcolword seccolword
do
    sed -i.bak "s/$firstcolword/$seccolword/g" file1 file2 file3 file4 file5
done < wordstoreplace.txt


Last edited by balajesuri; 02-26-2013 at 11:28 AM..
This User Gave Thanks to balajesuri For This Post:
# 3  
Old 02-26-2013
This should be even more efficient:
Code:
cmd=
while read -r w1 w2
do      cmd="${cmd}s/$w1/$w2/g;"
done < wordstoreplace.txt
for i in file[1-5]
do      sed "$cmd" $i > $i.new
done

This User Gave Thanks to Don Cragun For This Post:
# 4  
Old 02-26-2013
Quote:
Originally Posted by balajesuri
Code:
while read firstcolword seccolword
do
    sed -i.bak "s/$firstcolword/$seccolword/g" file1 file2 file3 file4 file5
done < wordstoreplace.txt


what is the "-i.bak" doing?
# 5  
Old 02-26-2013
Quote:
Originally Posted by SkySmart
what is the "-i.bak" doing?
Some implementations of sed have a -i option that in this form creates a backup copy of the file (as file.bak in this case) and then edits the file in place. Some implementations do not have this option.

If your sed has this option and you don't mind creating a new file for the backup; instead of creating a new file for the update, you could combine my proposal with balajesuri's proposal and only need to run sed once:
Code:
cmd=
while read -r w1 w2
do      cmd="${cmd}s/$w1/$w2/g;"
done < wordstoreplace.txt
sed -i.old "$cmd" file[1-5]

This User Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replacing strings

Hello All, I have two files with delimited | file 1 : 1|2|3 11|12|13 22|23|24 and file 2 : 1|4|5|6 11|14|15|16 22|25|26 I want to replace the value '1' in file 2 with the values in file 1 '1|2|3' so the final output will look like 1|2|3|4|5|6 11|12|13|14|15|16 22|23|24|25|26 (3 Replies)
Discussion started by: ArunKumarM
3 Replies

2. Shell Programming and Scripting

Finding a text in files & replacing it with unique strings

Hallo Everyone. I have to admit I'm shell scripting illiterate . I need to find certain strings in several text files and replace each of the string by unique & corresponding text. I prepared a csv file with 3 columns: <filename>;<old_pattern>;<new_pattern> ... (5 Replies)
Discussion started by: gordom
5 Replies

3. Shell Programming and Scripting

Finding/replacing strings in some files based on a file

Hi, We have a file (e.g. a .csv file, but could be any other format), with 2 columns: the old value and the new value. We need to modify all the files within the current directory (including subdirectories), so find and replace the contents found in the first column within the file, with the... (9 Replies)
Discussion started by: Talkabout
9 Replies

4. Shell Programming and Scripting

Extended replacing of nonspecific strings in text files [beware complicated !]

Well, to make another post at this helpful forum :b::D: I recently tried something like this, I want to replace all those numberings/letters that are located between <string>file://localhost/var/mobile/Applications/ and /Documents/</string> numberings =---- replace with: first... (6 Replies)
Discussion started by: pasc
6 Replies

5. Shell Programming and Scripting

Replacing strings

The code below gives the string "test1.txt" even though "tessdsdt" does not match "test1.txt". I would like to return "" if there is no match and return some kind of error that I can capture and decide what to do. echo test1.txt | awk -v src="tessdsdt" -v dst="test" '{sub(src,dst); print}' (16 Replies)
Discussion started by: kristinu
16 Replies

6. UNIX for Dummies Questions & Answers

best method of replacing multiple strings in multiple files - sed or awk? most simple preferred :)

Hi guys, say I have a few files in a directory (58 text files or somthing) each one contains mulitple strings that I wish to replace with other strings so in these 58 files I'm looking for say the following strings: JAM (replace with BUTTER) BREAD (replace with CRACKER) SCOOP (replace... (19 Replies)
Discussion started by: rich@ardz
19 Replies

7. Shell Programming and Scripting

Replacing strings in perl script

HI all, These are examples of the original value from a variable $abc can be FastEthernet1/0 GigabitEthernet3/1 Serial1/0 If $abc is FastEthernet*/* (where * can be any number), replace $abc value to fa*/* (same number as the original value). GigabitEthernet becomes ga*/* and Serial... (2 Replies)
Discussion started by: tententen
2 Replies

8. Shell Programming and Scripting

Replacing Strings in a File

I have a input file which looks like this: Value1="" Value2="" Value3="" ListOfValues=" $Value1 $Value2 $Value3" I have another program which computes the values ($val1, $val2, $val3). So if $val1 is 'A', $val2 is 'B' and $val3 is 'C', I should edit the input file so it will look like:... (6 Replies)
Discussion started by: laiko
6 Replies

9. Shell Programming and Scripting

Replacing Strings in a File

I have a input file which looks like this: Value1="" Value2="" Value3="" ListOfValues=" $Value1 $Value2 $Value3" I have another program which computes the values ($val1, $val2, $val3). So if $val1 is 'A', $val2 is 'B' and $val3 is 'C', I should edit the input file so it will look like:... (0 Replies)
Discussion started by: laiko
0 Replies

10. Shell Programming and Scripting

Replacing strings

I am trying to take the two line version of this: mv myFile.txt myFile.txt.bak sed 's/foo/bar/g' myFile.txt.bak > myFile.txt and make it into a shell script with three parameters. First two parameters are the string and string replacement and the third is file. So far this is what I have... (5 Replies)
Discussion started by: gordonheimer
5 Replies
Login or Register to Ask a Question