Konsolen Eingabe an gleiche Stelle in mehreren Dateien
Konsolen Eingabe an gleiche Stelle in mehreren Dateien
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
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
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
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.
Merkt man, dass ich Schlafstörungen habe?
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:
Und mit diesem Skript bearbeitet:
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...
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 //-->
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)
}
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.
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
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
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
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
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/
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.