Hallo Michael!

On Thu, Jul 25, 2002 at 01:35:19AM +0200, 8587835 wrote:
> Hallo Liste, hallo Jochen
> 
> sed habe ich ausprobiert. Mit Radio Eriwan: jein !
Respekt: Der Mann gibt nicht so leicht auf... :)
> sed -e "s/sells/""/g" <anode9.html> aanode9.html
> 
> Aus anode9.html wird das Wort "sells" gel�scht - aber nur so, da� dann 
> eine neue Datei gebildet werden mu�.
Verstehst du das < und > ?
Naja, ich auch nicht so ganz... jedenfalls wird die datei nach 
< datei
zur Standard-Eingabe f�r das, was davor steht. Also so, als ob du
es eintippen w�rdest, aber halt aus einer Datei.
' > ' leitet andersrum die Standard-Ausgabe auf eine Datei um.
Standardausgabe ist das, was ein Befehl auf die Konsole
ausspuckt, nicht das, was er vielleicht sonst noch so anstellt.
Probier mal aus < eingabe.datei und/oder > ausgabe.datei
wegzulassen und schau was passiert.
 
> Wenn ich eingebe
> 
> sed -e "s/sells/""/g" <anode9.html> anode9.html
> 
> dann  wird immer sinnwidrigerweise die Datei entleert: sie beh�lt ihren 
> Namen, aber
> es ist nichts mehr drin, 0 Byte. 
> D.h. ich mu� einen neuen Namen eingeben 
> resp. die neue
> Datei hei�t anders. Das will ich aber auf keinen Fall ! 

Ja, das Problem war auch schon mal erl�utert.

< und > versuchen dann gleichzeitig eine Datei f�r die  Eingabe
zu �ffnen und gleichzeitig als leere neue datei zum schreiben.
Dabei gewinnt dann das > und die Datei ist schon
�berschrieben/neu angelegt ("truncated"), wenn < aus ihr anf�ngt
zu lesen.  Umleitung mit > ist also nicht ungef�hrlich, weil es
Dateien gnadenlos �berschreibt!
Mit '>>' kann man �brigens auch an Dateien anh�ngen.

Sinnwidrig ist das alles aber eigentlich nicht, weil es nur so
geht. Wenn du irgendeine Datei auf einem PC �ffnest wirst du fast
immer mit einer Kopie der Datei im Speicher arbeiten und die noch
nicht gespeicherten �nderungen gehen meist von Zeit zu Zeit in
eine tempor�re swap-Datei. 
Das ist fast immer so, weil es einfach schneller aus dem Speicher
heraus geht und auch weil es nicht m�glich ist ohne gr�sseren
Aufwand eine Datei auf der Platte mittendrin zu erweitern. In C
ist das AfaIk nicht m�glich und das h�ngt auch damit zusammen,
dass Dateien halt als Kette vom Anfang zum Ende hin auf der
Platte liegen und auch in der Richtung gelesen werden wollen. Am
Ende noch was dranh�ngen geht immer, aber in der Mitte was rein
so dass Ende sich automatisch weiterschiebt... da musste erst mal
die Kette kaputt machen und dann wieder zusammenl�ten, ergo:
Datei lesen, teilen einf�gen, neu zusammensetzen und dann wieder
zur�ck auf die Platte schreiben.

> Also m��te 
> irgendein Befehl daran
> geh�ngt werden der sie nach dem Ausf�hren des Befehls wieder umbenennt, 
> zum alten Namen. Das Ganze ist ja eine Hilfskonstruktion zum Bearbeiten 
> von html-Dateien, die mit
> Bildern verlinkt sind.
> Also etwa so:
> 1. Schritt: entferne aus "Datei.html" die Phrase "aber" und ersetze sie 
> durch "". Nenne sie
>        "Datei.a.html"  ( <Datei.html> Datei.a.html
> 2. Schritt: nenne <Datei.a.html> Datei.html
> 
> eine Idee, wie das geht ?

Ich poste noch mal das Skript vom Jochen Hein, das das macht, so
in etwa:

cd '/home/michael/Desktop/LaTeX - Saarland'
for i in *; 
do 
   mv $i $i.bak ; 
   sed -e
      "s,http://www.htw-saarland.de/fb/gis/pi/edv-fallstudien/latex/,,";
   < $i.bak > $i; 
done

Also erst backup gemacht (umbenannt, m(o)v(e)) und dann aus denen
wieder Dateien mit den Originalnamen (> $i) erstellt.

Du hast den umgekehrten Weg vorgeschlagen a <sed-> b <mv-> a,
oben isses dann a <mv-> b <sed-> a.
�nder das doch mal nach deiner Idee, so als �bung...
("Stillarbeit" ... hehe )

Ausserdem ist f�r das Problem auch eine Variante als Einzeiler mit 
   find [...] -print0 | xargs -null [cmd]
sehr beliebt.
Vor allem unumg�nglich, wenn du Leerzeichen/Sonderzeichen in
Dateinamen hast. (Durch das -print0, -null, s. man xargs).

Ich hab auch noch einen link f�r dich, sind ein paar Skripte zu
eine Vorlesung, die ich im letzten Semester gemacht habe. Ganz
nett gemacht.

   http://www.fbi.fh-darmstadt.de/~schuette/Vorlesungen/Unix/index.html
Ansonsten: Buch macht kluch!
Ich benutz "Linux in a Nutshell", ist als Referenz ganz gut zu
gebrauchen. Ansonsten kenn ich leider nichts...

   Kennt vielleicht jemand ein Buch, das auch als Lehrbuch was
   taugen k�nnte? So mit kleinen Aufgaben zwischendurch, in der Art?

> Michael

Gruss,
   <!-- auch Lehrer :) --> Bj�rnP


----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an