improving my script (find & replace)


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers improving my script (find & replace)
# 1  
Old 12-11-2003
Question improving my script (find & replace)

Hi all,
I have a script that scan files, find old templet and replace it with new one.

#!/bin/ksh
file_name=$1
old_templet=$2
new_templet=$3

# Loop through every file like this
for file in file_name
do
cat $file | sed "s/old_templet/new_templet/g" > $file.new
#do a global searce and replace and put the results
mv $file.new $file
#rename $file.new to original name of file
done


How can I replace the old templet with few rows templet ?
for example:
the old templet =
xxxx
the new templet =
yyyy
zzzz

<script_name> <file_name> xxxx yyyy??zzzz

What has to be instead the ?? in order to split the yyyy and zzzz for tow separate rows ?

10x
Amir
# 2  
Old 12-11-2003
modify the sed part to

sed 's/old_template/new_templ1\^Jnew_templ2\^Jnew_templ3/' tst


here the \^J
is \ then a ctrl-V and hit the return key, u ll c a ^J character Smilie

besides instead of doing the cat and redirecting to one file and then moving the new file to old u can do

perl -i -ne "s/old_template/new_templ1\nnew_templ2\nnew_templ3/" file1

file1 will be overwritten with the desired result Smilie, use the \n instead of \^J in perl
# 3  
Old 12-14-2003
please, ]i need more help ..................

I change my script, but it does not work ......

#!/bin/ksh
file_name=$1
old_templet=$2
new_templet=$3

# Loop through every file like this
for file in file_name
do
cat $file | sed 's/old_template/new_templ1\^Jnew_templ2\^Jnew_templ3/' tst > $file.new
#do a global searce and replace and put the results
mv $file.new $file
#rename $file.new to original name of file
done

What is worng ??
# 4  
Old 12-14-2003
I am not clear with your question, still I suppose you want to use *sed* to replace some string,

old_template=$2
new_template=$3
filename=$1


cat $filename | sed "s/$new_template/$old_template/g" > file.new
mv file.new $filename

The thing is to interpret $ we need to give the whole expression under double quotes.

Cheers
JK
# 5  
Old 12-14-2003
my script does no work .....

#!/bin/ksh
file_name=$1
old_templet=$2
new_templet=$3

# Loop through every file like this
for file in $file_name
do
cat $file | sed "s/$new_template/$old_template/g" > $file.new
#do a global searce and replace and put the results
mv $file.new $file
#rename $file.new to original name of file
done


i try to run it from the command line, but it does not work.
any idea ???
# 6  
Old 12-14-2003
Originally posted by amir_yosha

#!/bin/ksh
file_name=$1
old_templet=$2
new_templet=$3

# Loop through every file like this
for file in $file_name
do
cat $file | sed "s/$new_template/$old_template/g" > $file.new
#do a global searce and replace and put the results
mv $file.new $file
#rename $file.new to original name of file
done
-----------------------------------------------------------------------------------

Why are you starting a new thread each time, you can reply or post new questions in your previous mail thread itself by clicking the "post reply" button at the bottom of the screen.

Well coming back to your queries first you are having

new_templet, old_templet and file_name variables, and you are using

new_template, old_template and file variables in your sed, did you intend to use new_templet, old_templet and file_name then put it there.

Also while running the script give the arguments correctly

first argrument should be a filename which you want to edit.
second argument is the old value.
third argument is the new value.

Cheers
JK
# 7  
Old 12-14-2003
it still does not work .....

#!/bin/ksh
file_name=$1
old_template=$2
new_template=$3

# Loop through every file like this
for file in $file_name
do
cat $file | sed "s/$old_template/$new_template/g" > $file.new
#do a global searce and replace and put the results
mv $file.new $file
#rename $file.new to original name of file
done

<script_mame> <flie_name> <old_template> <new_template>

hi,
i change it but it still does not work.
thanks for your help ....
amir
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Find & Replace with same case letters

I have text with upper and lower case words. I want to find something and replace it with something new. But it should match the case - Meaning - it should replace old upper cased word with NEW upper case word and lower with lower. example: this text is very simple TEXT. now I want to replace... (5 Replies)
Discussion started by: grep_me
5 Replies

2. UNIX for Dummies Questions & Answers

Find & Replace

Hi I am looking to rename the contents of this dir, each one with a new timestamp, interval of a second for each so it the existing format is on lhs and what I want is to rename each of these to what is on rhs..hopefully it nake sense CDR.20060505.150006.gb CDR.20121211.191500.gb... (3 Replies)
Discussion started by: rob171171
3 Replies

3. UNIX for Dummies Questions & Answers

GREP Find & Replace <p class>

I am making an eBook. I am editing the html in BBedit. I need to replace all <p class="s5"> with just a <p>. How do I write this for GREP? Thank you, Abby (5 Replies)
Discussion started by: cuddlykitty
5 Replies

4. Shell Programming and Scripting

Find & replace --> create a new file

Hi All, I have a unix shell script file as below. My task is a)to replace 248 to 350 and need to create a new file as BW3_350.sh b)to replace 248 to 380 and need to create a new file as BW3_380.sh c)to replace 248 to 320 and need to create a new file as BW3_320.sh there is no... (6 Replies)
Discussion started by: karthi_mrkg
6 Replies

5. Shell Programming and Scripting

Script to find & replace a multiple lines string across multiple php files and subdirectories

Hey guys. I know pratically 0 about Linux, so could anyone please give me instructions on how to accomplish this ? The distro is RedHat 4.1.2 and i need to find and replace a multiple lines string in several php files across subdirectories. So lets say im at root/dir1/dir2/ , when i execute... (12 Replies)
Discussion started by: spfc_dmt
12 Replies

6. Shell Programming and Scripting

Single/Multiple Line with Special characters - Find & Replace in Unix Script

Hi, I am creating a script to do a find and replace single/multiple lines in a file with any number of lines. I have written a logic in a script that reads a reference file say "findrep" and populates two variables $FIND and $REPLACE print $FIND gives Hi How r $u Rahul() Note:... (0 Replies)
Discussion started by: r_sarnayak
0 Replies

7. Shell Programming and Scripting

Find & Replace string in multiple files & folders using perl

find . -type f -name "*.sql" -print|xargs perl -i -pe 's/pattern/replaced/g' this is simple logic to find and replace in multiple files & folders Hope this helps. Thanks Zaheer (0 Replies)
Discussion started by: Zaheer.mic
0 Replies

8. Shell Programming and Scripting

find & replace with user input

Trying to create a script/executable to replace "abc" text string in "myfile.htm" with input from a pop-up field. For example, launch this thing and a prompt is popped up asking the user to input what "abc" should be replaced with, then it inserts what the user inputs in place of abc in the... (3 Replies)
Discussion started by: mike909
3 Replies

9. Shell Programming and Scripting

find & incremental replace?

Looking for a way using sed/awk/perl to replace port numbers in a file with an incrementing number. The original file looks like... Host cmg-iqdrw3p4 LocalForward *:9043 localhost:9043 Host cmg-iqdro3p3a LocalForward *:10000 localhost:10000 Host cmg-iqdro3p3b LocalForward... (2 Replies)
Discussion started by: treadwm
2 Replies

10. Shell Programming and Scripting

Find & Replace

I get a text file with 70+ columns (seperated by Tab) and about 10000 rows. The 58th Column is all numbers. But sometimes 58th columns has "/xxx=##" after the numeric data. I want to truncate this string using the script. Any Ideas...:confused: (3 Replies)
Discussion started by: gagansharma
3 Replies
Login or Register to Ask a Question