On Mon, 2003-01-13 at 06:06, Rechenberg, Andrew wrote:
> I don't believe that you can't substitute with grep or find.  Do you
> have access to sed?
> 
> sed -e 's/abdfgg/opsmsdd/g' filename > outputfilename
> 
> If you have multiple files with text you wish to replace, then you could
> use 'grep -R' to find them and if you're replacing with the same text in
> each file, then you could use the sed command in a loop and replace
> everything.
> 
> sed is your friend.

It's more of an acquaintance <wink>, nevertheless, searching and
replacing text is a common activity, so here's a short script to search
a directory tree for files containing a string and replace occurrences
of that string using find, grep, and sed:

<warning>
If you can't decipher this, be aware that this searches the *entire*
current directory (subdirectories included), and replaces *every*
occurrence of given string in *every* file.
</warning>


#!/usr/bin/env bash

function help() {
    echo "Searches entire current directory *tree* and replaces"
    echo "all occurences of <string1> with <string2> in all files."
    echo "Original file saved to <filename>.original."
    echo 
    echo "Usage: `basename $0` <string1> <string2> [.ext]"
    echo
    echo "Examples: "
    echo "  `basename $0` foo bar .txt"
    echo "     would replace the string foo with the string bar in
*.txt"
    echo "  `basename $0` foo bar"
    echo "     would replace the string foo with the string bar in ALL
files"
    echo
    exit
}

if [ $# -lt 2 ]; then
    help
fi

for f in `find . -type f -name "*$3" | xargs grep -l $1`; do
    sed "s/$1/$2/g" $f > $f.new
    mv $f $f.original
    mv $f.new $f
done


> 
> Hope this helps,
> Andy.
> 
> 
> -----Original Message-----
> From: Jianping Zhu [mailto:[EMAIL PROTECTED]] 
> Sent: Monday, January 13, 2003 8:22 AM
> To: [EMAIL PROTECTED]
> Subject: how to substutue string in a text file
> 
> 
> 
>  how to substutue string in a text file by using "gerp" or "find"?
> 
> I have a text file, lof of "abdfggg" in that text file, i need to change
> it to "opsmsdd", is there a simple way to do that?
> 
> Thanks 
> 
> 
> --------------------------------
> Jianping Zhu
> Department of Computer Science
> Univerity of Georgia 
> Athens, GA 30602
> Tel 706 5423900
> --------------------------------
> 
> 
> 
> -- 
> redhat-list mailing list
> unsubscribe mailto:[EMAIL PROTECTED]?subject=unsubscribe
> https://listman.redhat.com/mailman/listinfo/redhat-list
-- 
Cliff Wells, Software Engineer
Logiplex Corporation (www.logiplex.net)
(503) 978-6726 x308  (800) 735-0555 x308

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to