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.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich veruche gerade einen regex (druch einen grep) mit glob zu kombinieren.

Es sollen dabei alle Logs, die ".log" enhalten und nicht "datei" im Namen haben, in ein Array gepusht werden.

Kann mir jemand sagen wie ich grep und glob korrekt kombiniere? Andere Lösungen sind natürlich auch gerne gesehen.


#!/usr/bin/perl

use strict;

use warnings;


my @log_files_closed;

my $log_files_closed;


if(`find /sbin -name fuser` ne ""){

   @log_files_closed = ([]);

      `/sbin/fuser /sbin/fuser  2>/dev/null`;

      if ($? == "256"){

         while ( grep /[datei]/ glob("/logs/*.log*")){

            if (`/sbin/fuser $_ 2>/dev/null` eq "") {

               push (@log_files_closed,$_);

            }

         }

         while (glob("/logs/*.err*")){

            if (`/sbin/fuser $_ 2>/dev/null` eq "") {

               push (@log_files_closed,$_);

            }

         }

      }

      else{

         print ("fuser nicht ausführbar");

      }

}

else{

   print ("fuser nicht gefunden");

}


foreach (@log_files_closed){

   print "$_\n";

}

Gruß

Bummel

  • Autor

So geht es. =)

Danke für deinen Hinweis @bigvic


#!/usr/bin/perl

use strict;

use warnings;


my @log_files_closed;

my $log_files_closed;


if(`find /sbin -name fuser` ne ""){

   @log_files_closed = ([]);

      `/sbin/fuser /sbin/fuser  2>/dev/null`;

      if ($? == "256"){

		foreach (grep { !/datei|data/ } @{[</dir/*.{log,err}]}){

			if (`/sbin/fuser $_ 2>/dev/null` eq "") {

				push (@log_files_closed,$_);

			}				

      }

      else{

         print ("fuser nicht ausführbar");

      }

}

else{

   print ("fuser nicht gefunden");

}


foreach (@log_files_closed){

   print "$_\n";

}

Hast du es denn vorher schonmal mit

 grep { !/datei|data/ } </dir/*.{log,err}> 
probiert? Da grep als zweiten Parameter immer eine Liste verlangt, müsste das eigentlich von sich aus funktionieren. Außerdem kannst du mit der Funktion -x testen ob eine Datei vorhanden und für dein Skript ausführbar ist.
if( -x "/sbin/fuser") {

    [...]

} else {

    print "Nicht vorhanden oder nicht ausführbar.\n";

}
Außerdem erzeugst du bei der Initialisierung deiner Liste @log_files_closed eine Liste an deren 1. Stelle eine Referenz zu einer weiteren Liste steht, soweit ich ich das aber sehen kann, benötigst du das nicht. Es sollte also
 @log_files_closed = () 

reichen.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

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.