Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Perl-Skript -> Zeile löschen

Empfohlene Antworten

Tag zusammen,

ich hab ca. 100 Dateien aus denen ich genau eine Zeile mit immer demselben Inhalt löschen soll.

Das möchte ich natürlich nicht von Hand machen.

Nachdem ich jetzt schon seit über einem Jahr nix mehr mit Perl gemacht habe, komm ich grad schon ganz schön is grübeln.

Struktur is immer wie folgt:

im Verzeichnis "vhosts" liegen alle Domains als Verzeichnisse:

"domain1.de"

"domain2.de"

usw.

darin gibt es dann wieder einen Ordner der "conf" heißt und da liegt dann immer die Datei "httpd.include"

Zusammen also:

"domain1.de/conf/httpd.include"

In dieser Datei steht immer die eine Zeile:

"SuexecUserGroup <user> <gruppe>"

Wie kann ich jetzt durch die einzelnen Verzeichnisse wechseln, die Datei jeweils öffnen, die Zeile meinetwegen nach dem Suchbegriff "SuexecUserGroup" löschen und dann wieder schließen???

Hat mir einer vielleicht schon ein fertiges, oder ähnliches Skript das die Aktion erledigen würde?!?

Vielen Dank schon mal im Voraus.

hi,

vielleicht hilft dir das ein wenig auf die sprünge, hab selber auch schon länger nix mehr gemacht, aber ich glaub, das müsst so ungefähr stimmen.


$Datei = 'e:/ordner/datei.doc';
$Pfad = 'e:/test/';

#so kannst du eine datei öffnen

open (FILE, "<$Datei");
@DateiInhalt = <FILE>;
close(FILE);

#so kannst du ein verzeichnis einlesen

$Verzeichnis = 'e:/test';
opendir(DIR,"$Verzeichnis");
@VerzeichnisInhalt = readdir(DIR);
closedir(DIR);

#und dann könntest du ja z.b. in einer foreach schleife durchgehen

#die hier läuft durch jede zeile meiner datei
foreach $Zeile (@DateiInhalt)
{



#die hier läuft durch meine verzeichnisse
foreach $Verzeichnis (@VerzeichnisInhalt)
{
}
}
[/PHP]

hilft dir das ein wenig? ich hatte damals eine datei, in der bestimmte verzeichnisse standen und ich musste für jede zeile in der datei alle verzeichnisse durchlaufen und nach etwas suchen, das ich dann abändern musste, deshalb die verschachtelung.

mfg korea1

Hallo,

hmm, perl apache ich nehm mal an das es ein Linux System ist. Da geht das auch einfacher, ohne Perl :D

zuerst musst du in das Verzeichnis wechsel in dem die Domains als Ordner liegen.

Erstmal Backup machen der httpd.include dateien (kommt immer gut):

for i in `ls -1 | sed -e 's/\///'`; do

cp $i/conf/httpd.include /tmp/backup_include_$i;

echo $i done;

done

dann alle Dateien mit grep -v (-v gibt alle zeilen aus die _nicht_ zutreffen) bearbeiten.

In etwa so:

for i in `ls -1 | sed -e 's/\///'`; do

grep -v 'SuexecUserGroup' $i/conf/httpd.include > /tmp/foo;

mv /tmp/foo $i/conf/httpd.include;

echo $i done;

done

Aber vorher BackUp machen!!

HTH Henrik

Hallo ihr beiden,

hab mich für die untere Lösung von Henrik entschieden.

Hab vorher schön brav ein Backup gemacht ... hat aber direkt reibungslos funktioniert.

Waren übrigens 254 Conf-Dateien. Da würd ich glaub sterben wenn ichs von Hand machen müsste ;-)

Vielen Dank euch...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.