Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Frage an die sed profis

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Rossi
Gast





BeitragVerfasst am: 29. Jun 2001 14:21   Titel: Frage an die sed profis

Hallo,

ich versuche gerade ein wenig, sed zu verstehen. Das problem ist, das sed mir zwar die gesuchten Strings ersetzt, allerdings auf stdout ausgibt.
Ich würde gerne haben, das er die Änderungen in der Datei vornimmt, aber ich kann logischerweise nicht in die offene Datei umleiten. In eine andere Datei umleiten und diese dann umbenennen ist a) umständlich und unelegant und b) haut nicht hin, da dort dann nur die von sed "gefundenen" Zeilen enthalten sind und nicht der gesammte Text.

Jemand eine Idee ?
 

PB
Gast





BeitragVerfasst am: 29. Jun 2001 14:35   Titel: ne Notloesung inside

Du koenntest das Problem - bis vielleicht
ne bessere Loesung kommt - erstmal so loesen:

perl -pi -e 's/Auto/Katze/g' Datei.txt

Der Befehl ersetzt in der Datei "Datei.txt"
alle Woerter in denen "Auto" vorkommt, mit
"Katze".

Dieser Befehl funktioniert auch mit mehreren
Dateien, z.B. wenn Du 140 Texte hast, in
denen Du Auto durch Katze ersetzen muesstest.

perl -pi -e 's/Auto/Katz/g' *.txt

Tschoe
Fritz
 

tenbaset



Anmeldungsdatum: 16.03.2001
Beiträge: 31

BeitragVerfasst am: 29. Jun 2001 14:59   Titel: Re: Frage an die sed profis

Ein einfaches w als letzten oder vorletzten Befehl sollte genügen, um die Datei zurückzuscghreiben.

Hans
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Descartes
Gast





BeitragVerfasst am: 29. Jun 2001 15:05   Titel: Re: Frage an die sed profis

Wer braucht den für ein simples Suchen+Ersetzen Perl ?
Das geht doch auch mit VIM: vim -n -c "0,$s/Auto/Katz/g" -c ":wq" new.txt
 

Jochen
Gast





BeitragVerfasst am: 29. Jun 2001 15:06   Titel: Re: Frage an die sed profis

Tja, der Name "sed" stammt nun mal von "stream editor" und bezieht sich darauf, dass er wie ein typischer Filter arbeitet: Lesen von stdin, schreiben nach stdout. Ich denke, Dir bleibt wenig übrig, ausser Deiner eigenen Lösung mit umbenennen oder perl nehmen, wie Fritz vorgeschlagen hat.

@ Hans: ??? w schreibt nur den gerade vorliegenden pattern space in eine neue Datei. Ich denke, es ist nicht praktikabel, bei einer Datei mit ggf. 10000 Zeilen alle im hold space zu merken, um sie später unter altem Namen abzuspeichern.

Jochen
 

Rossi
Gast





BeitragVerfasst am: 29. Jun 2001 15:49   Titel: Re: Frage an die sed profis

Vielen Dank erstmal.

Noch ne Frage an Descartes, sollte er das lesen:

Weißt Du, ob das auch mit vanilla vi geht ? (bzw. werds zu Hause mal ausprobieren). Weil, den finde ich überall (wie perl wahrscheinlich auch).
 

hendrik



Anmeldungsdatum: 16.08.1999
Beiträge: 165

BeitragVerfasst am: 29. Jun 2001 16:20   Titel: Re: Frage an die sed profis

@ Rossi,
"vim ist Vi - iMproved"
die befehle sind die gleichen.
Rufe einfach mal vim ohne Parameter auf, schau Dir die Meldung an, mache dann das gleich mit vi
hendrik
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Sebastian Ude
Gast





BeitragVerfasst am: 29. Jun 2001 16:31   Titel: Re: Frage an die sed profis

@ Rossi

:set compatible

und der vim verhält sich (ziemlich genau) wie der original vi.
 

Jochen
Gast





BeitragVerfasst am: 29. Jun 2001 21:30   Titel: Re: Frage an die sed profis

@ Sebastian, Hendik:

Stimmt schon, was der vi kann, kann der vim schon lange, aber halt auch noch mehr. Ich bin mir jetzt nicht sicher, ob ein vanilla vi auch die Option "-c" kennt. Werd's Montag mal checken...

@ Rossi:

Den vi findest Du überall, das ist soweit korrekt. perl ist mittlerweile weit verbreitet, aber noch nicht selbstverständlich wie sed oder awk.

Jochen
 

Descartes
Gast





BeitragVerfasst am: 01. Jul 2001 11:05   Titel: Re: Frage an die sed profis

Zumindest der vanilla vi von HP/UX kennt das Argument -c

statt
vim -n -c "0,$s/Auto/Katz/g" -c ":wq" new.txt

lautet es mit HP/UX vanilla vi:
vi -c "0,$s/Auto/Katz/g" -c ":wq" new.txt

Es wird allerdings nur das letzte -c "..." bearbeitet !
Das Argument -c "0,$s/Auto/Katz/g" wird nicht abgearbeitet; sondern nur das -c ":wq" !
Desweiteren muss beim Aufruf -c "0,$s/bla/blub/g" ein Leerzeichen zwischen 0,$ und dem ersetzen Befehl.

Also vi -c "0,$ s/Auto/Katz/g" -c ":wq" new.txt wobei natürlich der Fehler mit dem "nur letzten -c Befehl ausführen" zum Tragen kommt.
Was aber geht ist vi -c "0,$ s/Auto/Katz/g" new.txt -- ist aber halt nicht geeignet für automatisierte Scriptaufgaben.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy