[linux-l] woerter in verschiedenen Zeile ersetzen in mehrere Dateien

Sven Guckes maillist-belug at guckes.net
Mi Jun 8 14:20:11 CEST 2005


* Ivan Villanueva <iv at artificialidea.com> [2005-06-08 13:09]:
> ich wollte das Wort "Examples" in "Online Examples" in mehrere .html Dateien
> ersetzen. Nur manchmal steht "Online" in einer Zeile und "Examples" in
> der Nächste (mit zusätzlichen Tabs und/oder Leer-Zeichen.). Z.B.:
>
> xxx
> xxx Online
>     Examples xxx
> xxx
>
> Nachdem ich viel Doku gelesen habe bin ich auf diese Idee gekommen:
> vim -c "bufdo %s/Online\(\_s\+\)Examples/Online\1Replaces/g" -c "wa" -c "q" **/*.html
> was wunderbar funktioniert, wenn man vim und die zsh hat.
> Meine Frage: geht es einfacher?

"anders" geht es bestimmt.  zB so:

  sed -i "s/\(Online\)\n *\(Examples\)/\1 \2/" **/*html(.)
  find -type f -name *.html | xargs sed -i "s/.../.../"

aber definiere mal "einfacher"!
welches mass consultierst du?

was ist eigentlich genau dein ziel?  das
ganze in noch weniger zeichen machen?
optimierung auf schnelligkeit
oder nur auf lesbarkeit?
bestimmt tools verwenden oder
andere tools kennenlernen?

remember the GIGO princciple!

Sven



Mehr Informationen über die Mailingliste linux-l