WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   Befehl für search and replace (http://www.wcm.at/forum/showthread.php?t=64013)

ERRA 24.07.2002 10:07

Befehl für search and replace
 
Aufgabenstellung ist es, einen bestimmten String in einem File durch einen anderen zu ersetzten. Weiters an einer bestimmten Position in dem selben File 2 weitere Zeilen hinzuzufügen.

Und das alles wenn geht durch ein Scripts! Also nicht direktes editieren des Files mit VI oder EMACS oder so.

I häng! Bitte helfts mir.

ripper 24.07.2002 10:57

das hab ich auch mal gemacht ich habs im java gelöst....

du liest die erste datei komplett ein und gibst alles in einen string, dann schaust du wie lange der zu ersetzende string ist.
dann machst du substrings mit der länge des zu ersetzenden strings, dann bei jedem durchgang einen vergleich ob der substring mit dem zu ersetzenden string übereinstimmt.... wenn ja -> ersetzen, wenn nein -> weitermachen -> wenn fertig ist einfach den kompletten string wieder in die datei schreiben.....

ich kann mal den java code posten, bin aber noch nicht daheim....

:tux::tux::tux::tux:

pc.net 24.07.2002 11:00

schau dir mal die commands
grep, sed und awk
an

sed

it00x30 24.07.2002 11:07

für nicht-programmierer grep sed und awk,
wenn du jedoch gern ein bisschen programierst und perl installiert hast wäre das das ideale tool für dich - wiederverwendbar, automatisierbar, ...

such nach "perl regular expression" oder so was in google, falls du noch keine erfahrung damit hast

ERRA 24.07.2002 11:08

Danke für die Antworten!

@ripper
Java steht mir nicht auf jedem Server zur Verfügung (sind ca. 250!) - fällt somit also aus.

@pc.et
sed hab ich mir schon mal genauer angesehen. Nur bis ich die richtige Syntax für meine Zwecke gefunden hab, bin ich alt. ;) Mal gucken.

ripper 24.07.2002 11:12

najo habs in da schule als projekt gemacht....

aber wenn ne textdatei mit ca. 5000 zeilen hast, geht da ram auf 20 MB :P

und 5 mins hats auch gedauert zum durchlaufen mit einem amd xp 1700+....

najo solang es nur für die schule war :)

Pavlovs_Dog 24.07.2002 11:15

@ERRA

sed < orifile "s/text1/text2/g" > newfile

Habs nicht ausprobiert, sollte aber nicht so falsch sein.

LG
Pav

pc.net 24.07.2002 11:57

hab das seinerzeit auch hier im forum gelernt ;)

Code:

# ersetze $1 mit $2 in Datei $3 schreibe in Datei $4
OLD=$1      # originaltext teil
NEW=$2      # Neuer Text
INFILE=$3    # Quelldatei
OUTFILE=$4  # Zieldatei

sed "s/$OLD/$NEW/g" $INFILE > $OUTFILE


SNo0py 24.07.2002 11:59

Ich bin für Perl... :)

Code:

$string =~ s/text to search/text to replace/g;
$string muss natürlich das File enthalten...

ERRA 24.07.2002 12:57

@pc.net
Danke, ich glaub das war's!

Ich war schon auf dem richtigen Weg. Nur hatte ich mit dem richtigen Setzen der Variablen ein Problem.

Jetzt muss ich nur noch einen 2ten String einbauen der ersetzt gehört.

Zunächst aber VIELEN DANK AN ALLE!


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag