Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Eine Zeile und 700 html dateien :cry:

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
edgarkls
Hacker
Hacker
Beiträge: 540
Registriert: 27. Jan 2005, 15:59
Wohnort: manchester
Kontaktdaten:

Eine Zeile und 700 html dateien :cry:

Beitrag von edgarkls »

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.
Benutzeravatar
snaewe
Hacker
Hacker
Beiträge: 415
Registriert: 13. Dez 2004, 16:32
Wohnort: Zu Hause

Beitrag von snaewe »

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

Stefan
Der Name Windows stammt ursprünglich aus dem Indianischen und
bedeutet: "Weißer Mann, der auf eine Sanduhr starrt."
Benutzeravatar
Dakuan
Hacker
Hacker
Beiträge: 282
Registriert: 30. Jul 2004, 09:46
Wohnort: Hamburg

Beitrag von Dakuan »

Ich muss den code von etwas über 700 html-dateien ändern. Immer nur eine zeile austauschen...
sowas steht mir auch noch bevor, allerdings ca. 800 Dateien auf einem Win98 PC.
Ich habe beschlossen das Laufwerk via smb zu mounten und das von Linux aus zu machen. Als Einstieg in die Shellprogrammierung ziehe ich mir gerade das hier rein: http://www.cyberciti.biz/nixcraft/linux ... ures/lsst/
sed wird da auch kurz erwähnt.
Dakuan
Es ist zwar schon alles gesagt, aber eben noch nicht von jedem.
edgarkls
Hacker
Hacker
Beiträge: 540
Registriert: 27. Jan 2005, 15:59
Wohnort: manchester
Kontaktdaten:

eine zeile und ......

Beitrag von edgarkls »

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.....
Benutzeravatar
snaewe
Hacker
Hacker
Beiträge: 415
Registriert: 13. Dez 2004, 16:32
Wohnort: Zu Hause

Beitrag von snaewe »

Das wird dann ungefähr so aussehen

Code: Alles auswählen

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
Der Name Windows stammt ursprünglich aus dem Indianischen und
bedeutet: "Weißer Mann, der auf eine Sanduhr starrt."
styyxx
Member
Member
Beiträge: 61
Registriert: 12. Okt 2004, 14:43

Beitrag von styyxx »

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: Alles auswählen

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
Benutzeravatar
snaewe
Hacker
Hacker
Beiträge: 415
Registriert: 13. Dez 2004, 16:32
Wohnort: Zu Hause

Beitrag von snaewe »

styyxx hat geschrieben:Tach,

soweit schon richtig, nur den '.' im Suchmuster von sed sollte man entwerten.
Klar! :oops:
styyxx hat geschrieben: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
Der Name Windows stammt ursprünglich aus dem Indianischen und
bedeutet: "Weißer Mann, der auf eine Sanduhr starrt."
styyxx
Member
Member
Beiträge: 61
Registriert: 12. Okt 2004, 14:43

Beitrag von styyxx »

snaewe hat geschrieben: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
Benutzeravatar
Dakuan
Hacker
Hacker
Beiträge: 282
Registriert: 30. Jul 2004, 09:46
Wohnort: Hamburg

Beitrag von Dakuan »

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
Es ist zwar schon alles gesagt, aber eben noch nicht von jedem.
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

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

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Benutzeravatar
Dakuan
Hacker
Hacker
Beiträge: 282
Registriert: 30. Jul 2004, 09:46
Wohnort: Hamburg

Beitrag von Dakuan »

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
Es ist zwar schon alles gesagt, aber eben noch nicht von jedem.
Antworten