• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Eine Zeile und 700 html dateien :cry:

edgarkls

Hacker
Ich muss den code von etwas über 700 html-dateien ändern. Immer nur eine zeile austauschen und immer dieselbe. Ich will das auf keinen fall von hand machen, datei für datei. Ein batch job wäre schön. In windows (oder vielmehr dos) kein problem, weil ich da ein bisschen was von batch-commandos verstehe. In Linux aber bin ich weitgehend neuling und suche deshalb gerade verzweifelt nach einer lösung.... oder vielleicht auch nach einem kleinen komfortablen programm. Vielleicht weiß ja jemand was. Für einen guten tip wäre ich jedenfalls grenzenlos dankbar.
 

snaewe

Hacker
Zeig doch mal, wie die zu ändernde Zeile aussieht.
Wahrscheinlich wirst Du mit 'sed' zum Ziel kommen.

Stefan
 

Dakuan

Hacker
OP
E

edgarkls

Hacker
es ist sogar noch weniger als eine zeile, einfach 700 und ein paar links von ".de/cgi-bin/search/" auf ".de/search".

Das ist schon alles.....
 

snaewe

Hacker
Das wird dann ungefähr so aussehen
Code:
FILES='datei1 datei'
for f in $FILES 
do 
    sed 's#.de/cgi-bin/search#.de/search#g' $f > $f.new
done
Wobei die Variable FILES auch durch ein Konstrukt mit 'ls' oder 'find' gefüllt werden kann.
Es wird hier für jede Datei eine neue Datei 'datei.new' angelegt. Diese kann natürlich im Skript auch per 'mv' umbenannt werden ("sed 's#....' file > file" geht nicht !)

HTH

Stefan
 

styyxx

Member
Tach,

soweit schon richtig, nur den '.' im Suchmuster von sed sollte man entwerten. Was zwar nicht wirklich wichtig ist aber die Variable FILES braucht man nicht:
Code:
for f in 'datei1 datei'
do
    sed 's#\.de/cgi-bin/search/#.de/search#g' $f > $f.new
done
Natürlich kann man auch hier die Liste automatisch erstellen lassen.

Grüße
styyxx
 

snaewe

Hacker
styyxx schrieb:
Tach,

soweit schon richtig, nur den '.' im Suchmuster von sed sollte man entwerten.
Klar! :oops:
styyxx schrieb:
Was zwar nicht wirklich wichtig ist aber die Variable FILES braucht man nicht:
Nee, braucht man nicht, macht das ganze aber übersichtlicher, wenn die Dateiliste aus einem etwas komplizierteren Konstrukt kommt.

Stefan
 

styyxx

Member
snaewe schrieb:
Nee, braucht man nicht, macht das ganze aber übersichtlicher, wenn die Dateiliste aus einem etwas komplizierteren Konstrukt kommt.

Soso, es ist also "übersichtlicher" wenn das Konstrukt etwas komplizierter ist ... :wink:

Grüße
styyxx
 

Dakuan

Hacker
Ich habe da jetzt auch noch mal 'ne Frage. Ich habe das Beispiel mal für meine Anwendung abgewandelt und es geht prima.
Aber was hat es mit dem "#" Zeichen auf sich? In allen Beispielen, die ich bisher gesehen habe wird nur der normale Schrägstrich "/" verwendet.
Dakuan
 

TeXpert

Guru
der 'normale' Marker für sed ist auch / aber dann müsstest Du alle Slashes in Deinem Text durch \/ maskieren, und das wird unübersichtlich :) daher kann sed auch mit anderen trennern arbeiten
 

Dakuan

Hacker
Ich glaube sed könnte mein Freund werden. Hatte eben noch etwas Probleme mit grep und mit regulären Ausdrücken aber jetzt geht es.
Es hat gerade mal 22 sec gedauert um auf meinem Windows Server (Jana2) bei 840 HTML Dateien einige Tags zu ändern. Habe einfach die Partition via SMB gemountet.
Erstaunlich was Windows sich alles von Linux gefallen läßt. Ich bin echt begeistert :D
Dakuan
 
Oben