Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Suche Code-Schnipsel für Unix-Befehle(Suchen und Ändern in Text)

Suche Code-Schnipsel für Unix-Befehle(Suchen und Ändern in Text)

Z26.08.0611:24
Ich möchte gerne alle .txt Dateien im aktuellen Verzeichnis nach dem Wort "blau" durchsuchen und mit "rot" ersetzen. Habe es leider nicht mehr hinbekommen. Meine Linux-Zeit ist schon zu lange her.

Ich denke es läuft auf eine Kombination von grep und sed? Das ganze in einer Zeile.

Jemand eine Idee? Ich weiss, dass es möglich ist, hatte es vor Jahren schon mal hinbekommen. Jedoch noch unter Linux 2.4.
0

Kommentare

_mäuschen
_mäuschen26.08.0611:44

sed s/foo/bar/ in.file > out.file
0
Z26.08.0615:06
hilft mir leider nicht.
0
Rantanplan
Rantanplan26.08.0615:11
Z
Ich denke es läuft auf eine Kombination von grep und sed? Das ganze in einer Zeile.

Nein, find und sed. Oder perl -pi
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
_mäuschen
_mäuschen26.08.0615:25

sed /foo/ s/foo/bar/g filename   # executes more quickly

da brauchts find nicht.


Oder wie Rantanplan sagt@@perl
0
_mäuschen
_mäuschen27.08.0615:01


one liners, I love them:-X


for x in *.txt; do sed s/blau/rot/ $x > tmp.file; mv tmp.file $x; done
0
MacMark
MacMark27.08.0615:35
Smultron kann es auch, aber Terminal ist smarter
„@macmark_de“
0
_mäuschen
_mäuschen27.08.0615:48


Yep. Und dieser hier sucht auch in Unterverzeichnissen;-)

 for x in `find . -name *.txt`; do sed s/blau/rot/ $x > tmp.file; mv tmp.file $x; done
0
_mäuschen
_mäuschen27.08.0615:50
Ist das Programm TextMate von Dir, seaside(?)
0
Z27.08.0617:23
_mäuschen

one liners, I love them:-X


for x in *.txt; do sed s/blau/rot/ $x > tmp.file; mv tmp.file $x; done

ist glaube ich immer noch nicht so wie ich es in erinnerung habe. hmmm. ich probiers mal.


seaside

Mit TextMate kannst Du es auch machen. Folder öffnen und dann EditFindFind in Project.

nicht dass was ich Suche, Textedit kann es auch und ist kostenlos.

Ich will es ja per iCal alle 24 Stunden aufrufen lassen, daher 1-Zeiler.
Per Hand mit Texteditor ist daher nicht das Wahre.
0
_mäuschen
_mäuschen27.08.0617:32

hmm:-/

Willst Du rot/blau als textlichen Inhalt oder Teil des file_name.txt ersetzen?

0
Z27.08.0617:36
textlicher Inhalt.
0
Rantanplan
Rantanplan27.08.0617:41
Mei, dem Drama kann man ja nicht mehr zusehen

find . -name '*.txt' | xargs perl -pi.bak -e 's/text/ersatz/g'
ist glaube ich immer noch nicht so wie ich es in erinnerung habe.

So, what? Es gibt hunderte Wege einen Einzeiler zu schreiben, der das tut. Im Gegensatz zu der "for ... do"-Konstruktion hängt die hier nicht von der Shell ab.
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
RSenat27.08.0617:47
Lass es doch mir cron aufrufen. Verbraucht weniger CPU und ist zuverlässiger.
0
_mäuschen
_mäuschen27.08.0623:50

  Die verflixten Feinheiten des Terminals

rot rot rot
blau blau blau
blau blaubeere blaurot adelblau
blau blau blau
rot rot

ergibt mit @@Rantanplan
(auch mein obgnt. sed)
find . -name '*.txt' | xargs perl -pi.bak -e 's/blau/rot/g'

rot rot rot
rot rot rot
rot rot
beere rotrot adelrot
rot rot rot
rot rot


und das ist ja echt brutal=-O



Jedoch

 - Anfangs Zeile
find . -name '*.txt' | xargs perl -pi.bak -e 's/^blau/rot/'

rot rot rot
rot
blau blau
rot blaubeere blaurot adelblau
rot blau blau
rot rot

 - innerhalb Zeile
find . -name '*.txt' | xargs perl -pi.bak -e 's/ blau / rot /g'

rot rot rot
rot rot
blau
rot blaubeere blaurot adelblau
rot rot blau
rot rot

 - Ende Zeile
find . -name '*.txt' | xargs perl -pi.bak -e 's/ blau$/ rot/'

rot rot rot
rot rot rot
rot
blaubeere blaurot adelblau
rot rot rot
rot rot


belässt blau als Teil eines string8-)


Wie das jetzt in einen one-liner:-/
oder doch als 3-Zeiler perl_script
und dann per launchd;-)


0
_mäuschen
_mäuschen28.08.0600:07
[EDIT]h

- Anfangs Zeile
find . -name '*.txt' | xargs perl -pi.bak -e 's/^blau /rot /'
0
seaside27.08.0615:33
Z<br>
Ich möchte gerne alle .txt Dateien im aktuellen Verzeichnis nach dem Wort "blau" durchsuchen und mit "rot" ersetzen. Habe es leider nicht mehr hinbekommen. Meine Linux-Zeit ist schon zu lange her. .

Mit TextMate kannst Du es auch machen. Folder öffnen und dann EditFindFind in Project.
0
seaside27.08.0618:50
_mäuschen<br>
Ist das Programm TextMate von Dir, seaside(?)

Bin ich heute das Hassobjekt schlechthin? Oder was soll die Frage bedeuten?

Textmate ist der beste OS X Texteditor, den ich kenne: http://macromates.com/
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.