Konsolen Eingabe an gleiche Stelle in mehreren Dateien

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Konsolen Eingabe an gleiche Stelle in mehreren Dateien

Beitrag von corax » 13.11.2003 22:30:36

Hi,

ich würde gerne eine Texteingabe über die Konsole an die gleiche Stelle in mehreren Dateien einfügen.

Jede Datei beinhaltet z.B.:

<body marginwidth="0" marginheight="0" topmargin="0" >

<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->


Genau dazwischen soll der Eintrag:
<!-- coolMenu //-->
<?php require(DIR_WS_INCLUDES . 'coolmenu.php'); ?>
<!-- coolMenu_eof //-->

Es sind sehr viele Dateien wo ich jeweils den gleichen Eintrag an eine bestimmte Stelle einfügen müsste.
Geht sowas über die Konsole? Vielleicht über ein Shellscript?

Gruß,
corax

Benutzeravatar
falx
Beiträge: 199
Registriert: 03.03.2003 15:12:09
Wohnort: Konstanz
Kontaktdaten:

Beitrag von falx » 14.11.2003 00:44:56

Hi!

Kann hier auch gleich mal wieder mein Credo loswerden :)
Die Frage bei Linux ist nicht: "Was geht?" sondern "Wie geht's?"!

Also stellt sich nur noch die Frage: Wie?

Natürlich geht es über ein Shellscript. Ich weiß ja nicht was für Erfahrungen mit welcher Sprache gesammelt hast, aber an Deiner Stelle würde ich perl, python oder ruby nehmen, weil so etwas genau deren Stärke ist. Und ich finde deren Code persönlich etwas schöner als bash...

Grüßle,
falx
There are two things in the world I hate the most: People intolerant to other peoples distros... and SuSE.

Benutzeravatar
falx
Beiträge: 199
Registriert: 03.03.2003 15:12:09
Wohnort: Konstanz
Kontaktdaten:

Beitrag von falx » 14.11.2003 01:47:27

Merkt man, dass ich Schlafstörungen habe? :wink:

Ok, ich such grad n bisschen nach Aufgaben und in sowas bin ich halt noch nicht fit.
Von daher hab ich mich mal dran gemacht...

Falls Du das benutzen willst, musst noch ruby installieren, aber ist kein Ding, n paar MB.

Also als Inputfile hab ich das hier genommen:

Code: Alles auswählen

<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->


<!-- coolMenu //-->
<?php require(DIR_WS_INCLUDES . 'coolmenu.php'); ?>
<!-- coolMenu_eof //--> 
Und mit diesem Skript bearbeitet:

Code: Alles auswählen

#!/usr/bin/ruby

inputfile = "test.html"
outputfile = "test2.html"
inserttext = ["\nDa wird man doch bloed\n", "wenn man das alles\n", "von Hand machen soll!\n"]
matchpattern = '<!-- header_eof //-->' + "\n"

linesarray = IO.readlines(inputfile)

newarray = linesarray.slice(0..linesarray.index(matchpattern)) + inserttext + \
	linesarray.slice((linesarray.index(matchpattern)+1)..linesarray.size)

fd = File.new(outputfile, 'w+')
newarray.each { |line|
fd.write(line)
}
Zum ausprobieren in einem Verzeichnis den Inputfile (test.html) anlegen. Das Skript dort auch reinkopieren und mit "ruby <scriptname>" aufrufen...
dann wird eine neue Datei test2.html auftauchen und die sollte verändert sein.

Dann muss das natürlich noch erweitert werden, dass das für mehrere Dateien gilt, aber da ich nicht weiß, wie das bei Dir ausschaut, kann ich dazu nicht viel sagen...

Grüßle,
falx

PS: Ich glaub, damit macht mein skript nicht, was Du exakt haben willstl, aber es geht ja ums Prinzip... :)
There are two things in the world I hate the most: People intolerant to other peoples distros... and SuSE.

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 14.11.2003 20:38:27

Hi falx.
sieht gut aus....werde das Script mal testen und schaun ob's auch mit mehreren Outputfiles (die ja schon existieren) geht.
Melde mich dann wieder. Danke!
Gruß,
corax

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 14.11.2003 20:56:56

Hi,
der Text wird zwar in test2.html (Outputfile) eingefügt..sonstiger Text in test2.html wird jedoch gelöscht.
So sieht test2.html ursprünglich aus:

<title><?php echo TITLE; ?></title>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) .
DIR_WS_CATALOG; ?>">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin
="0" rightmargin="0">

Da soll der Text aus test.html eingefügt werden

<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" width="100%" cellspacing="3" cellpadding="3">
<tr>
<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<
?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->

Das ist nur ein Ausschnitt aus dem File. Insgesamt sind es um die 50 files die angepasst werden müssen (alle haben einen unterschiedlichen Inhalt)

Gruß,
corax

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 14.11.2003 21:32:15

ups. sorry, es funktioniert....ich probiers jetzt mit mehreren Dateien

Benutzeravatar
falx
Beiträge: 199
Registriert: 03.03.2003 15:12:09
Wohnort: Konstanz
Kontaktdaten:

Beitrag von falx » 14.11.2003 22:23:02

Fein! Wäre nett, wenn Du Dein Endergebnis hier posten würdest.
Würd mich interessieren...

Freut mich, wenn ich helfen konnte,
falx
There are two things in the world I hate the most: People intolerant to other peoples distros... and SuSE.

corax
Beiträge: 42
Registriert: 19.05.2002 15:51:59

Beitrag von corax » 15.11.2003 14:33:19

Hi,
wie mach ich das mit mehreren Dateinen...irgendwie in Verbindung mit einem Shell Scipt.
Über eine Eingabe den Dateinamen dem Text hinzugefügt werden soll eingeben und dann den Text der eingefügt werden soll und danach das Script starten.
Hmm....d.h. ich muss mich erstmal schlau machen....was Shell Scripte betrifft und natürlich auch Ruby.
Gruß,
corax

Benutzeravatar
falx
Beiträge: 199
Registriert: 03.03.2003 15:12:09
Wohnort: Konstanz
Kontaktdaten:

Beitrag von falx » 15.11.2003 14:46:36

Hi!

Jo, kann ich nur empfehlen. Bin ja auch grad am Lernen und kann nie schaden bei gewissen Gelegenheiten "mal schnell" n shell / ruby - Skript basteln zu können.

Kleiner Tipp von mir:
Für bash: http://www.linuxfibel.de/bashprog.htm
und für ruby: http://www.ruby-doc.org/docs/Tutorial/
There are two things in the world I hate the most: People intolerant to other peoples distros... and SuSE.

Antworten