Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

In For-Schleife nach Dateiinhalt Filtern

Frage Entwicklung Batch & Shell

Mitglied: Androxin

Androxin (Level 2) - Jetzt verbinden

20.02.2014 um 09:31 Uhr, 1597 Aufrufe, 5 Kommentare

Guten Tag,

ich habe ein Shellscript, welches Dateien, die max. 30 Tage alt sind, aus einem definierten Verzeichnis ausliest, deren Inhalt parst und anschließend als XML in eine PHP Datei einbettet und auf einen FTP Server lädt. Nun habe ich das Problem, dass in diesen Dateien hardwarebedingt vereinzelt vermurkste Zeichen auftauchen, die später vom Webserver beim Zerlegen der XML Daten nicht gelesen werden können. An der Ursache kann man leider nichts ändern und fehlerhafte Inhalte sollen gar nicht erst zum Server gelangen. Ich möchte nun also fehlerhafte Dateien einfach in der for-Schleife ignorieren.

Wie kann man die "in" Bedingung so erweitern, dass alle Dateien, die auch Zeichen außerhalb des ASCII Zeichensatzes (Buchstaben, Ziffern, Sonderzeichen, Zeilenumbrüche) enthalten, rausfallen?
Bei einem Durchlauf werden rund 30 Dateien verarbeitet und das Script wird alle 1-2 Minuten ausgeführt.


Sinnvoll gekürzte Version des Scripts:
01.
#!/bin/bash 
02.
 
03.
UPDIR="/tmp" 
04.
XMLFILENAME=test.php 
05.
 
06.
ANZAHL=0 
07.
ZEITSPANNETAG=30 
08.
 
09.
 
10.
 
11.
erstelle_xml() { 
12.
 
13.
  for FILE in $( find $DIR -mtime -$ZEITSPANNETAG ); do 
14.
	ANZAHL=$((ANZAHL+1)) 
15.
	echo "<message>" >> $UPDIR/$XMLFILENAME 
16.
     
17.
	echo "<date>" >> $UPDIR/$XMLFILENAME 
18.
	grep Datum: $FILE | sed 's/Datum://g' | sed 's/^ \+//g' >> $UPDIR/$XMLFILENAME 
19.
 
20.
    echo "</message>" >> $UPDIR/$XMLFILENAME 
21.
 
22.
  done 
23.
   
24.
}
Mitglied: Endoro
20.02.2014 um 14:34 Uhr
Hey,

du kannst doch einfach mit grep prüfen, ob irgendwelche Zeichen ausserhalb einer definierten Menge in der Datei vorhanden sind.

Gruss.
Bitte warten ..
Mitglied: Androxin
21.02.2014 um 12:24 Uhr
Zitat von Endoro:

du kannst doch einfach mit grep prüfen, ob irgendwelche Zeichen ausserhalb einer definierten Menge in der Datei
vorhanden sind.

Ja, so habe ich mir das auch schon gedacht.

Also das find auf diese Art zu ergänzen:
find $DIR -mtime -$ZEITSPANNETAG -exec grep -l --regexp='[a-z........]*' {} \;

Allerdings stehe ich gerade auf dem Schlauch, was die Formulierung des Ausdrucks angeht.

Eine Datei mit fehlerhaftem Zeichen (hier dargestellt durch µ ) könnte so aussehen:
01.
Hallo <1*2 3> 
02.
Fµo
oder so:
01.
Hallo fµo
oder so:
01.
*µµµ*
Wie kann ich den Ausdruck so formulieren, dass die drei genannten Bsp aus der Dateiliste rausfallen, weil die ja mindestens einen falschen Wert enthalten?
Bitte warten ..
Mitglied: Endoro
21.02.2014 um 13:23 Uhr
Definiere einfach alle Zeichen, die auftreten dürfen, in einer Menge. Dann nimm die Negation der Menge. Beispiel:
01.
grep -El '[^[:alnum:][:space:]!#$%&*+.:-]'
Bitte warten ..
Mitglied: Androxin
21.02.2014 um 13:57 Uhr
Zitat von Endoro:

Definiere einfach alle Zeichen, die auftreten dürfen, in einer Menge. Dann nimm die Negation der Menge. Beispiel:
01.
grep -El '[^[:alnum:][:space:]!#$%&*+.:-]'

Sehr cooler Ansatz. Funktioniert so aber leider noch nicht.
Ich habe den Ausdruck wie folgt erweitert. Leider wird nicht eine einzige Datei zurückgegeben, obwohl fehlerhafte und korrekte von Find gefunden werden.

01.
find $DIR -mtime -$ZEITSPANNETAG -exec grep -L --regexp='[^[:alnum:][:space:][:punct:]!#$%&*+.:-]' {} \;
Bitte warten ..
Mitglied: Endoro
21.02.2014 um 14:51 Uhr
Zum einen musst du wahrscheinlich die Menge der Zeichen erweitern, zum anderen kenne ich diese Konstruktion mit exec nicht. Ich habe keine Ahnung von bash aber hab es bislang immer mit Pipe gesehen.
Gruss.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

Batch & Shell
FOR Schleife mit LOOP und nachfolgender FOR Schleife
gelöst Frage von miczarBatch & Shell6 Kommentare

Hallo zusammen, ich habe ein Problem mit einem Batchfile. Situation: im Netzwerk ist kein WINS mehr vorhanden und so ...

Batch & Shell
FOR Schleife läuft nicht
gelöst Frage von sugramBatch & Shell4 Kommentare

Hallo Ich glaube ich sehe den Wald vor lauter Bäumen nicht. Aber ich bekomme die FOR Schleife nicht zum ...

Batch & Shell
For Schleife kaputt?
gelöst Frage von Peter32Batch & Shell5 Kommentare

Hallo, ich finde den Fehler nicht irgendwie bekomme ich ständig denselben Inhalt in "Name.txt" und kann dann nicht weiterarbeiten ...

Neue Wissensbeiträge
Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 2 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 2 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 14 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 21 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...