Nahrazeni

Martin Mačok martin.macok na underground.cz
Pátek Květen 4 12:08:33 CEST 2001


On Thu, May 03, 2001 at 01:17:48PM +0200, Lubor Kolar wrote:
> Zdravim konferenci a rad bych se zeptal na nasledujici (snad) trivialitu:
> mam vetsi mnozstvi txt souboru, ve kterych bych potreboval jeden konstantni
> text nahradit jinym (napr misto "Skunk s.r.o." tam dat "Skunk a.s."). Je
> nejaka jednoducha metoda, tak to udelat ve vsech tech souborech najednou?

Napsal jsem si kdysi na to takovy skriptik, mozna ho budete muset
trochu upravit, aby akceptoval vsechny pozadovane znaky v
nahrazovanych retezcich.

-- 
   Martin Mačok
  underground.cz
    openbsd.cz
------------- další část ---------------
#!/bin/sh
# autor: martin.macok na underground.cz
# credits: 	"Pavel Janik ml." <Pavel.Janik na inet.cz>
#		"Pavel Kankovsky" <peak na argo.troja.mff.cuni.cz>
# licence: GPL
# pouziti: greplace cesta co_nahradit cim_nahradit

VERSION=1.3

PATH=/bin:/usr/bin:/sbin

if [ "x$1" = "x--version" -o "x$1" = "x--help" ] || [ "$#" != "3" ] ; then
	echo "GNU Replace verze $VERSION"
	echo "pouziti: $0 cesta co_nahradit cim_nahradit"
	exit
fi

if { ! expr match "x$2" "x[-a-zA-Z0-9_@#]*$" >/dev/null } ||\
   { ! expr match "x$3" "x[-a-zA-Z0-9_@#]*$" >/dev/null } ; then
   echo "pracuji pouze s alfanumerickymi znaky a _-" >&2
   exit
fi

FTMP=`mktemp /tmp/XXXXXX`
[ -z "$FTMP" ] && exit 1

find "$1" -type f -print | while read f ; do
	if sed "s/$2/$3/g" <"$f" >"$FTMP" ; then
		echo "$f ... zpracovan"
		cat "$FTMP" >"$f"
	else
		echo "$f ... nelze zpracovat!"
	fi
done

rm $FTMP


Další informace o konferenci Linux