Textdateien manipulieren: sed oder awk ?
Hallo, ich muss auf diversen Linuxsystemen Dateien nach einem best. Muster durchsuchen und dieses Muster gegen ein neues austauschen. Hintergrund: unsere DNS-domain wird mittelfristig geändert, und wir haben an vielen Stellen (Skripte, Webseiten ...) noch die alte stehen. Wie würdet Ihr das machen ? Ich bin mit sed und awk noch nicht auf Du und Du. Wenn ich sed richtig verstanden habe, schreibt sed nach stdout, und ich kann es nicht auf die zu bearbeitende Datei umleiten, da diese dann leer wäre. Geht das mit awk ? Dankbar für alle Tipps und Meinungen. Bernd -- Bernd Lentes staatl. geprüfter Techniker Systemadministration Institut für Entwicklungsgenetik HelmholtzZentrum münchen Raum 35/1008f Ingolstädter Landstraße 1 85764 München-Neuherberg mailto:bernd.lentes@helmholtz-muenchen.de phoneto:089/3187-1241 faxto:089/3187-3826 http://www.helmholtz-muenchen.de/idg/ -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Lentes, Bernd schrieb:
Hallo,
ich muss auf diversen Linuxsystemen Dateien nach einem best. Muster durchsuchen und dieses Muster gegen ein neues austauschen. Hintergrund: unsere DNS-domain wird mittelfristig geändert, und wir haben an vielen Stellen (Skripte, Webseiten ...) noch die alte stehen. Wie würdet Ihr das machen ? Ich bin mit sed und awk noch nicht auf Du und Du. Wenn ich sed richtig verstanden habe, schreibt sed nach stdout, und ich kann es nicht auf die zu bearbeitende Datei umleiten, da diese dann leer wäre.
Geht das mit awk ?
perl -pi -e '~s|foo|bar|g' file War zumindestens für mich als Nicht-Entwickler schnell udn einfach einzusetzen. Es gibt bestimmt bessere Lösungen aber vielleicht reicht das ja schon. gruß -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Lentes, Bernd wrote:
Hallo,
ich muss auf diversen Linuxsystemen Dateien nach einem best. Muster durchsuchen und dieses Muster gegen ein neues austauschen. Hintergrund: unsere DNS-domain wird mittelfristig geändert, und wir haben an vielen Stellen (Skripte, Webseiten ...) noch die alte stehen. Wie würdet Ihr das machen ? Ich bin mit sed und awk noch nicht auf Du und Du. Wenn ich sed richtig verstanden habe, schreibt sed nach stdout, und ich kann es nicht auf die zu bearbeitende Datei umleiten, da diese dann leer wäre.
# man sed [...] -i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied) Ist also überhaupt kein Problem mit sed die Dateien direkt zu bearbeiten. Du solltest du sicher sein, dass der Suchausdruck NUR auf das trifft, was du ersetzen willst. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Sandy Drobic, Montag, 18. August 2008 17:52:
# man sed [...] -i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
Ooops, stimmt, so gehts ohne Umweg über das Tempfile... -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 18. August 2008 17:52:49 schrieb Sandy Drobic:
Lentes, Bernd wrote:
Hallo,
ich muss auf diversen Linuxsystemen Dateien nach einem best. Muster durchsuchen und dieses Muster gegen ein neues austauschen. Hintergrund: unsere DNS-domain wird mittelfristig geändert, und wir haben an vielen Stellen (Skripte, Webseiten ...) noch die alte stehen. Wie würdet Ihr das machen ? Ich bin mit sed und awk noch nicht auf Du und Du. Wenn ich sed richtig verstanden habe, schreibt sed nach stdout, und ich kann es nicht auf die zu bearbeitende Datei umleiten, da diese dann leer wäre.
# man sed [...] -i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
Ist also überhaupt kein Problem mit sed die Dateien direkt zu bearbeiten.
man lernt nie aus. Das ist sicherlich aber nicht portabel :-) Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
On Mon, 18 Aug 2008, =?iso-8859-1?q?Dr. J=FCrgen Vollmer?= wrote:
Am Montag, 18. August 2008 17:52:49 schrieb Sandy Drobic:
# man sed [...] -i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
Ist also überhaupt kein Problem mit sed die Dateien direkt zu bearbeiten.
man lernt nie aus. Das ist sicherlich aber nicht portabel :-)
Dann kann man immer noch sponge benutzen ;) sed 's/foo/bar/g' file|sponge file Wahrscheinlich funktioniert sogar sowas: sed 's/foo/bar/g' file | echo "`cat`" > file sponge kommt bei mir von http://kitenet.net/~joey/code/moreutils/ Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 228. You spend Saturday night making the counter on your home page pass that 2000 mark. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 18. August 2008 19:39:04 schrieb Christian Brabandt:
On Mon, 18 Aug 2008, =?iso-8859-1?q?Dr. J=FCrgen Vollmer?= wrote:
Am Montag, 18. August 2008 17:52:49 schrieb Sandy Drobic:
# man sed [...] -i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
Ist also überhaupt kein Problem mit sed die Dateien direkt zu bearbeiten.
man lernt nie aus. Das ist sicherlich aber nicht portabel :-)
Dann kann man immer noch sponge benutzen ;)
sed 's/foo/bar/g' file|sponge file
Wahrscheinlich funktioniert sogar sowas: sed 's/foo/bar/g' file | echo "`cat`" > file
das denke ich gehnt nicht, denn das würde die Annahme über| (Pipe) machen, daß die Prozesse "nacheinander" ablaufen.
sponge kommt bei mir von http://kitenet.net/~joey/code/moreutils/
Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 228. You spend Saturday night making the counter on your home page pass that 2000 mark.
-- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hallo, Am Mon, 18 Aug 2008, Christian Brabandt schrieb:
On Mon, 18 Aug 2008, =?iso-8859-1?q?Dr. J=FCrgen Vollmer?= wrote:
Am Montag, 18. August 2008 17:52:49 schrieb Sandy Drobic:
# man sed [...] -i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
Ist also überhaupt kein Problem mit sed die Dateien direkt zu bearbeiten.
Ach? $ sed -i 's/foo/bar/' /dev/null sed: invalid option -- i Wenn's vorhandene sed die Option kennt und das auch auf allen relevanten hosts, dann kann man das verwenden. perl hat -i schon wesentlich länger, und v.a. jedes Perl seit der Einführung dieser Option.
man lernt nie aus. Das ist sicherlich aber nicht portabel :-)
Dann kann man immer noch sponge benutzen ;)
sed 's/foo/bar/g' file|sponge file
$ sponge bash: sponge: command not found Nicht portabel. Ein perl findet sich aber auf praktisch jedem unixoiden System. -dnh PS: *scnr* -- Cats give a whole new meaning to the phrase "fuzzy logic". -- Seanette Blaylock, in nanae -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi David! On Mon, 18 Aug 2008, David Haller wrote:
Nicht portabel. Ein perl findet sich aber auf praktisch jedem unixoiden System.
Vi wird von Posix gefordert, richtig? Bei perl ist das afaik nicht so. vi -c "%s/foo/bar/g|x" file
PS: *scnr* Dito
Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 229. You spend so much time thinking what to add on this list. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, vielen Dank an alle Rückmeldungen. Das mit sed -i gefällt mir ziemlich gut. Zu der Frage der Portabolität, ... nun, auf einem System funktioniert es natürlich nicht :-( Deswegen würde ich es da gerne mit vi (wie unten beschrieben) machen. Nun komme ich mit dem Ausdruck gar nicht klar. Wo kann man was darüber nachlesen ? Bernd
-----Original Message----- From: Christian Brabandt [mailto:cblists@256bit.org] Sent: Tuesday, August 19, 2008 8:56 AM To: opensuse-de@opensuse.org Subject: Re: Textdateien manipulieren: sed oder awk ?
Hi David!
On Mon, 18 Aug 2008, David Haller wrote:
Nicht portabel. Ein perl findet sich aber auf praktisch jedem unixoiden System.
Vi wird von Posix gefordert, richtig? Bei perl ist das afaik nicht so.
vi -c "%s/foo/bar/g|x" file
PS: *scnr* Dito
Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 229. You spend so much time thinking what to add on this list.
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag, 19. August 2008 10:57:01 schrieb Lentes, Bernd:
Hallo,
vielen Dank an alle Rückmeldungen. Das mit sed -i gefällt mir ziemlich gut. Zu der Frage der Portabolität, ... nun, auf einem System funktioniert es natürlich nicht :-( Deswegen würde ich es da gerne mit vi (wie unten beschrieben) machen.
Benutz' sed das ist der richtige Weg. Benutz' sed in portabler Art&Weise: sed < DATEI -e'....' > TMP_DATEI && mv TMP_DATEI DATEI sed gibt's sogar nativ unter KleinWeich, Großrechnern (MVS) usw. usf.
Nun komme ich mit dem Ausdruck gar nicht klar. Wo kann man was darüber nachlesen ?
Kennst Du vi? im Handbuch zu vi :-) bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
-- Bernd Lentes staatl. geprüfter Techniker Systemadministration Institut für Entwicklungsgenetik HelmholtzZentrum münchen Raum 35/1008f Ingolstädter Landstraße 1 85764 München-Neuherberg mailto:bernd.lentes@helmholtz-muenchen.de phoneto:089/3187-1241 faxto:089/3187-3826 http://www.helmholtz-muenchen.de/idg/
-----Original Message----- From: Dr. Jürgen Vollmer [mailto:Juergen.Vollmer@informatik-vollmer.de] Sent: Tuesday, August 19, 2008 11:09 AM To: opensuse-de@opensuse.org Subject: Re: Textdateien manipulieren: sed oder awk ?
Kennst Du vi? im Handbuch zu vi :-)
Ist mir schon klar. Ich meinte damit, ob jemand ein gutes Tutorial im Internet kennt. Bernd
-- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag, 19. August 2008 11:26:59 schrieb Lentes, Bernd:
Kennst Du vi? im Handbuch zu vi :-)
Ist mir schon klar. Ich meinte damit, ob jemand ein gutes Tutorial im Internet kennt.
http://www.google.de/search?q=vim+tutorial&ie=UTF-8&oe=UTF-8 bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Am 19. August 2008 11:26 schrieb Lentes, Bernd <bernd.lentes@helmholtz-muenchen.de>:
Ist mir schon klar. Ich meinte damit, ob jemand ein gutes Tutorial im Internet kennt.
vimtutor Und lern bitte zitieren. Gruß Martin -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Am Dienstag, 19. August 2008 11:26 schrieb Lentes, Bernd: snip
Ist mir schon klar. Ich meinte damit, ob jemand ein gutes Tutorial im Internet kennt. Ist zwar vim und nicht im Internet, aber gedruckt und auf Papier (afaik das einzige auf deutsch)
# vim 7 GE-PACKT: vi improved # von Reinhard Wobst # Broschiert: 382 Seiten # Verlag: Mitp-Verlag; Auflage: 3., aktualisierte Auflage. (November 2007) # Sprache: Deutsch # ISBN-10: 3826617819 # ISBN-13: 978-3826617812 # Preis: 16,95 EUR das kann ich empfehlen oder # vi-Editor. Kurz und gut (Taschenbuch) # von Arnold Robbins (Autor), Schenk Imke (Übersetzer) # Taschenbuch: 62 Seiten # Verlag: O'Reilly; Auflage: 1 (Mai 1999) # Sprache: Deutsch # ISBN-10: 3897212137 # ISBN-13: 978-3897212138 # Preis 8,00 EUR ist eine Referenz, man sollte wissen nach was man sucht -- Mit freundlichen Grüßen Matthias Müller (Benutzer #439779 im Linux-Counter http://counter.li.org) PS: Bitte senden Sie als Antwort auf meine E-Mails reine Text-Nachrichten! Siehe auch: http://www.gnu.org/philosophy/no-word-attachments.de.html
Hallo, Am Dienstag, 19. August 2008 23:06 schrieb Matthias Müller:
Hallo
Am Dienstag, 19. August 2008 11:26 schrieb Lentes, Bernd: snip
Ist mir schon klar. Ich meinte damit, ob jemand ein gutes Tutorial im Internet kennt.
Ist zwar vim und nicht im Internet, aber gedruckt und auf Papier (afaik das einzige auf deutsch)
Leider habe ich den Sprung von awk und sed zu vim nicht mitbekommen, aber zu vim findet man z.B. mehr als genug in http://www.truth.sk/vim/vimbook-OPL.pdf oder auf deutsch ein bischen unter http://lug.fh-swf.de/vim/vim-kurzanleitung.pdf -Karl -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
-----Original Message----- From: Christian Brabandt [mailto:cblists@256bit.org] Sent: Tuesday, August 19, 2008 8:56 AM To: opensuse-de@opensuse.org Subject: Re: Textdateien manipulieren: sed oder awk ?
Hi David!
On Mon, 18 Aug 2008, David Haller wrote:
Nicht portabel. Ein perl findet sich aber auf praktisch jedem unixoiden System.
Vi wird von Posix gefordert, richtig? Bei perl ist das afaik nicht so.
vi -c "%s/foo/bar/g|x" file
Hallo Christian, Jetzt hab ich mir den vimtutor reingezogen, sowie vim.org durchstöbert, aber nirgendwo gefunden, was das abschließende |x in obiger Zeilge bedeuten soll. Kannst Du mich erleuchten ? Bernd -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi, On Tue, 19 Aug 2008, Lentes, Bernd wrote:
From: Christian Brabandt [mailto:cblists@256bit.org] Sent:
vi -c "%s/foo/bar/g|x" file
Jetzt hab ich mir den vimtutor reingezogen, sowie vim.org durchstöbert, aber nirgendwo gefunden, was das abschließende |x in obiger Zeilge bedeuten soll. Kannst Du mich erleuchten ?
Es sind mehrere Kommandos. Das x sorgt für das Speichern. Mit | werden mehrere (Ex-) Kommandos abgetrennt, x steht für :exit. Also interaktiv in Vi folgendermaßen: vi datei (öffne Datei) :%s/foo/bar/g (ersetze alle Vorkommen von foo durch bar) :x (beende und speichere, falls sich was geändert hat) Diese Lösung war übrigens nicht ganz Ernst gemeint. Sie sollte nur zeigen, dass man jeden vi-Clone auch als sed/Perl/awk Ersatz nutzen kann. Daher nutzt es nur Kommandos, die jeder vi-Clone verstehen sollte und daher portabel sein sollte. Ich würde es ohnehin interaktiv machen. Da kann man relativ leicht überprüfen, ob der reguläre Ausdruck passt (bzw. bei Fehlern relativ leicht rückgängig machen) und dann alles Ersetzen. Vorteil von Vim hier, es kann auch erweiterte reguläre Ausdrücke (siehe Thread von vor ein paar Tagen) und man kann auch interaktiv eine große Menge an Dateien schnell verarbeiten. Hin und wieder muß ich z.B. in allen xml-Dateien im aktuellen Verzeichnis einen Text ersetzen. (Sed/awk/perl ist hier auf Windows nicht vorhanden.) Das mache ich dann so: :args *.xml (alle xml-Dateien der Argumentenliste hinzufügen) :argdo :%s/foo/bar/g|upd (in jeder xml-Datei ersetze foo durch bar und speichere hinterher die Datei, falls sie geändert worden ist) Und dann schaue ich zu, wie Vim losrattert ;) David wird mir wahrscheinlich jetzt eine viel schnellere, ressourcenschonendere und portablere Perl-Lösung um die Ohren hauen. Die würde ich wahrscheinlich selber hinkriegen, aber bis ich soweit bin, habe ich die xml-Dateien schon 3 Mal weiterverarbeitet ;) Für Dateien, die größer als mehrere MB sind, würde ich auch zu einer Perl Lösung greifen. Wer schonmal versucht hat, eine Datei im Vim zu öffnen, die größer ist als der verfügbare RAM, weiß wovon ich spreche. Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 231. You sprinkle Carpet Fresh on the rugs and put your vacuum cleaner in the front doorway permanently so it always looks like you are actually attempting to do something about that mess that has amassed since you discovered the Internet. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 19 Aug 2008, Christian Brabandt schrieb:
:args *.xml (alle xml-Dateien der Argumentenliste hinzufügen) :argdo :%s/foo/bar/g|upd (in jeder xml-Datei ersetze foo durch bar und speichere hinterher die Datei, falls sie geändert worden ist)
Und dann schaue ich zu, wie Vim losrattert ;)
David wird mir wahrscheinlich jetzt eine viel schnellere, ressourcenschonendere und portablere Perl-Lösung um die Ohren hauen. Die würde ich wahrscheinlich selber hinkriegen, aber bis ich soweit bin, habe ich die xml-Dateien schon 3 Mal weiterverarbeitet ;)
perl -pi.bak -e 's/foo/bar/g' *.xml Allerdings guckt das nicht, ob Original und die geändertere Version gleich sind. Läßt sich bei Bedarf beheben: for f in *.xml; do test -e "${f}.bak" && cmp "${f}" "${f}.bak" && rm "${f}.bak"; done Wenn man sowas öfter braucht kann man ein perlscript, das nach jeder Datei selber den Vergleich macht und ggfs. die überflüssige Datei löscht. HTH, -dnh -- Now the world has gone to bed, | Now I lay me down to sleep, Darkness won't engulf my head, | Try to count electric sheep, I can see by infrared, | Sweet dream wishes you can keep, How I hate the night. | How I hate the night. -- Marvin -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 19 Aug 2008, Christian Brabandt schrieb:
On Mon, 18 Aug 2008, David Haller wrote:
Nicht portabel. Ein perl findet sich aber auf praktisch jedem unixoiden System.
Vi wird von Posix gefordert, richtig? Bei perl ist das afaik nicht so.
vi -c "%s/foo/bar/g|x" file
Warum das Plagiat verwenden? Ed, man! !man ed [1] :-P Und ja, ganz ernst, für solche Aufgaben ist ed auch sehr gut geeignet. Und wenn man sed und oder vi kennt, ist die Bedienung kein Problem. -dnh [1] http://www.gnu.org/fun/jokes/ed.msg.html -- Warning: Some of my best mistakes are yet to be made. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi David! On Tue, 19 Aug 2008, David Haller wrote:
Und ja, ganz ernst, für solche Aufgaben ist ed auch sehr gut geeignet. Und wenn man sed und oder vi kennt, ist die Bedienung kein Problem.
Wollte ich auch erst benutzen, aber es war hier nicht installiert und ich hatte keine Lust ed nachzuinstallieren. ;) Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 233. You start dreaming about web pages...in html. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 19 Aug 2008, Christian Brabandt schrieb:
On Tue, 19 Aug 2008, David Haller wrote:
Und ja, ganz ernst, für solche Aufgaben ist ed auch sehr gut geeignet. Und wenn man sed und oder vi kennt, ist die Bedienung kein Problem.
Wollte ich auch erst benutzen, aber es war hier nicht installiert und ich hatte keine Lust ed nachzuinstallieren. ;)
<mode=Marktschreier> Steine! Frische Steine! Flache Steine, spitze Steine, runde Steine, kleine Steine, große Steine! ... </mode> Ein *nix* ohne ed ist keins. :P -dnh --
You've heard of "social networking"? Well, this is antisocial networking. Are you sure? I thought it was "social notworking." That makes sense for a recovery venue like this; otherwise a sysadmin's desired ideal state in the workplace is antisocial notworking. -- in asr
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mi, 20.08.2008, 02:31, schrieb David Haller:
Ein *nix* ohne ed ist keins. :P
ACK. Ich hab mich auch kurz gewundert. Liegt vermutlich daran, dass es das Image einer Debian-Minimalinstallation war, was ich per vmplayer laufen lasse. Also hab ich mich nicht weiter gewundert. -- :wq! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, werde das wohl mit sed machen. Danke an alle Tipps. Bernd
-----Original Message----- From: Christian Brabandt [mailto:cblists@256bit.org] Sent: Wednesday, August 20, 2008 6:46 PM To: opensuse-de@opensuse.org Subject: Re: Textdateien manipulieren: sed oder awk ?
Am Mi, 20.08.2008, 02:31, schrieb David Haller:
Ein *nix* ohne ed ist keins. :P
ACK. Ich hab mich auch kurz gewundert. Liegt vermutlich daran, dass es das Image einer Debian-Minimalinstallation war, was ich per vmplayer laufen lasse. Also hab ich mich nicht weiter gewundert.
-- :wq!
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Lentes, Bernd, Montag, 18. August 2008 17:37:
ich muss auf diversen Linuxsystemen Dateien nach einem best. Muster durchsuchen und dieses Muster gegen ein neues austauschen. Hintergrund: unsere DNS-domain wird mittelfristig geändert, und wir haben an vielen Stellen (Skripte, Webseiten ...) noch die alte stehen. Wie würdet Ihr das machen ? Ich bin mit sed und awk noch nicht auf Du und Du. Wenn ich sed richtig verstanden habe, schreibt sed nach stdout, und ich kann es nicht auf die zu bearbeitende Datei umleiten, da diese dann leer wäre.
Naja, man könnte das einfach so machen: TEMPFILE=$(mktemp) # den Bedürfnissen evtl. anpassen... grep -ril "altedomain" /pfad/zu/den/skripten | while read FILE; do sed s/altedomain/neuedomain/g $FILE > $TEMPFILE mv "$TEMPFILE" "$FILE" done Quick&Dirty, und bitte auch nochmal überprüfen, aber im Prinzip müßte das funktionieren. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 18. August 2008 17:37:14 schrieb Lentes, Bernd:
Hallo,
ich muss auf diversen Linuxsystemen Dateien nach einem best. Muster durchsuchen und dieses Muster gegen ein neues austauschen. Hintergrund: unsere DNS-domain wird mittelfristig geändert, und wir haben an vielen Stellen (Skripte, Webseiten ...) noch die alte stehen. Wie würdet Ihr das machen ? Ich bin mit sed und awk noch nicht auf Du und Du. Wenn ich sed richtig verstanden habe, schreibt sed nach stdout, und ich kann es nicht auf die zu bearbeitende Datei umleiten, da diese dann leer wäre.
Geht das mit awk ?
nein. man kann (ohne Klimmzüge) mit awk/sed/perl nicht die aktuell gelesene Datei bearbeiten. Aber wo ist das Problem TF=/tmp/xx.$$ # (oder mktemp - create a temporary file or directory) sed < DATEI -f sed-skript > $TF mv $TF DATEI ich benutze die Tools so: - sed Einzeiler quick&dirty, Einfache Suche/Tausche Operationen aufDateien - awk kleinere Patterns, kleinere Berechnungen - perl grosse komplexere Aufagebn, komplexe (gschachtelte) Patterns
ich muss auf diversen Linuxsystemen Dateien nach einem best. Muster durchsuchen und dieses Muster gegen ein neues austauschen. Hintergrund:
- mit grep schauen wieviele Stellen betroffen sind - Schauen wie komplex die Aufgabe sein wird - sed/awk/perl nach obigen Kriterien aussuchen. Meist wird sed zusammen mit einem Shell-Wrapper benutzt, der über die Verzeihnisse traversiert usw. Bye Jürgen Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hallo, Am Mon, 18 Aug 2008, =?iso-8859-1?q?Dr. J=FCrgen Vollmer?= schrieb:
nein. man kann (ohne Klimmzüge) mit awk/sed/perl nicht die aktuell gelesene Datei bearbeiten.
Quark. perl -i, aktuelles GNU sed '-i'. Und dann gibt es natürlich noch ed. IIRC: $ echo ' s/foo/bar/g w q ' | ed datei HTH, -dnh -- Brain fried -- Core dumped -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (10)
-
Andre Tann
-
Christian Brabandt
-
David Haller
-
Dr. Jürgen Vollmer
-
Karl Weber
-
Lentes, Bernd
-
Martin Schröder
-
Matthias Müller
-
Ralf Prengel
-
Sandy Drobic