[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [K12OSN] How to change X-terminales networks



Rob Owens wrote:

I'm not an expert on the syntax, but I know you can use 'sed' for this.
It'll find and replace text in any file.  Something like:

sed s/192.168.0.254/192.168.10.1/g myconfigfile.txt > myconfigfile.txt.2

That'll find the first IP address in myconfigfile.txt, and replace it
with the 2nd IP address in myconfigfile.txt.2 -- you'll then have to
delete the original config file and replace it with the new one.

You could probably put together a script that does a recursive grep
(grep will find text in a file) and the run sed on that file.  This is
probably wrong, but it might go something like this:

#!/bin/bash

# Change these variables to suit your needs
OLDIP=192.168.0
NEWIP=192.168.10
SEARCHDIR=/etc

for FILE in `ls -R $SEARCHDIR`
do
	grep $OLDIP $FILE
	if [ $? == 0 ]; then
		sed s/$OLDIP/$NEWIP/g $FILE > $FILE.new && mv -f $FILE.new $FILE
	fi
done

Instead of creating a new file using sed and then overwriting the old file you can use sed with the in-place (-i) flag. If you specify an extension with the -i flag, then a backup of the original file will be saved using that extension.

You can also replace strings inline using Perl for instance:

	perl -p -i -e 's/OLD/NEW/g' files

Nils Breunese.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]