Suchen und Ersetzen
Aufgabe
Unter UNIX oder mit Cygwin unter MS-Windows sind in mehreren Dateien eines Verzeichnisses ein identischer Textbereich in einen anderen zu überführen. Lösungsvorschlag
Eine mögliche Lösung zeigt das folgende csh/tcsh-Script:
#!/bin/csh -f
#
if ( $#argv < 3 ) then
echo ""
echo ""
echo " Exchange in file(s) all pattern1 with the pattern2."
echo " Patterns have to be enclosed in single quotes. Special"
echo " characters must be protected with a back slash."
echo ""
echo " Usage: renpat [files]"
echo ""
exit 1
endif
#
set pat1 = ($argv[1])
set pat2 = ($argv[2])
shift; shift;
#
foreach file ( $argv )
sed s/$pat1/$pat2/g $file > $file$$
mv $file$$ $file
end
#
# EOF
Alternative LösungEleganter als Einzeiler mit Ruby:
ruby -i.bak -pe 'sub "foo", "bar"' *.[ch]Erklärung: Im aktuellen Verzeichnis wird in allen C-Quell- und Header-Files foo durch bar ersetzt und das ursprüngliche File als Sicherungskopie mit der Endung .bak belassen. To top
| Nach Oben |