wert aus txt file auslesen
hallo zusammen wäre super wenn einer von Euch ne Idee hätte
Ich habe ein txt. file mit circa 17000 Einträgen aus netzwerk access listen. die einträge sehen wie folgt aus:
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=0)
nun kommt das erste Problem die Einträge können unetrschiedlich lang sein das bedeutet groß mit Excel Text in Spalten und filter is nicht
Ich bräucht aus jeder Zeile den Wert hitcnt wo der Wert > 0 ist
wie kann ich das am besten abfangen
Gruß
Matthias
Ich habe ein txt. file mit circa 17000 Einträgen aus netzwerk access listen. die einträge sehen wie folgt aus:
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=0)
nun kommt das erste Problem die Einträge können unetrschiedlich lang sein das bedeutet groß mit Excel Text in Spalten und filter is nicht
Ich bräucht aus jeder Zeile den Wert hitcnt wo der Wert > 0 ist
wie kann ich das am besten abfangen
Gruß
Matthias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 102545
Url: https://administrator.de/contentid/102545
Ausgedruckt am: 13.11.2024 um 00:11 Uhr
36 Kommentare
Neuester Kommentar
Hallo matt,
Was verstehst du unter "unterschiedlich lang"?
Und welchen Wert benötigst du aus den entsprechenden Zeilen?
Alles oder nur einen bestimmten Teil?
Ich arbeite da gerade an etwas vergleichbaren,
Logdateien zwecks einpflegen in eine Datenbank normalisieren.
Leider ist VB nicht gerade mein Gebiet...
Gruß,
Niklas
Was verstehst du unter "unterschiedlich lang"?
Und welchen Wert benötigst du aus den entsprechenden Zeilen?
Alles oder nur einen bestimmten Teil?
Ich arbeite da gerade an etwas vergleichbaren,
Logdateien zwecks einpflegen in eine Datenbank normalisieren.
Leider ist VB nicht gerade mein Gebiet...
Gruß,
Niklas
Das würde bewirken, das jede Zeile aus deiner Logdatei
die nicht 0) enthält in eine neue Datei geschrieben
wird.
Wenn in deiner Logdatei Zeilen existieren die kein (hitcnt=0) enthalten,
würden diese ebenfalls übernommen.
Wenn das okay ist, wäre meine Lösung "overkill" ;)
Gruß,
Niklas
kann nicht sein,
mit diesen Testdaten:
und o.g. Code am Prompt wird das angezeigt (bzw in neue Datei geschrieben):
cu paulepank
mit diesen Testdaten:
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=0)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=1)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=2)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=0)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=123)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=1)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=2)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=123)
cu paulepank
@matt1967
Da "findstr" nur Zeilen filtert, kann dadurch eigentlich nichts (im Sinne von einzelnen Zeichen) "abgeschnitten" werden - poste doch bitte ein paar von den betroffenen Zeilen ...
Grüße
bastla
Da "findstr" nur Zeilen filtert, kann dadurch eigentlich nichts (im Sinne von einzelnen Zeichen) "abgeschnitten" werden - poste doch bitte ein paar von den betroffenen Zeilen ...
Grüße
bastla
Ich habe da so einen Verdacht...
Wenn ich richtig liege, handelt es sich um Logdateien
von einer Cisco Pix Appliance...
Und wenn ich mich recht entsinne liegt der Pix eine
Linux Distribution zu Grunde, dh. ihr habt ein anderes
Zeilenumbruchszeichen (LF vs. CR-LF).
Wenn ich nicht richtig liege, ignoriert das und
erschießt mich ;P
Gruß,
Niklas
Wenn ich richtig liege, handelt es sich um Logdateien
von einer Cisco Pix Appliance...
Und wenn ich mich recht entsinne liegt der Pix eine
Linux Distribution zu Grunde, dh. ihr habt ein anderes
Zeilenumbruchszeichen (LF vs. CR-LF).
Wenn ich nicht richtig liege, ignoriert das und
erschießt mich ;P
Gruß,
Niklas
@paulepank
Warst Du da nicht ein klein wenig voreilig? Vielleicht hätte auch matt1967 gerne ...
Grüße
bastla
Warst Du da nicht ein klein wenig voreilig? Vielleicht hätte auch matt1967 gerne ...
Grüße
bastla
Hallo matt1967!
Wie schon oben erwähnt, habe ich mit einigen Deiner Beispielzeilen eine Testdatei erstellt und nur LF für Zeilenumbrüche verwendet:
Mit der Befehlszeile
erhalte ich folgenden Inhalt der "neue_log.txt":
Die Zeilen in "neue_log.txt" sind ebenfalls nur durch LF getrennt.
Du kannst mir aber gerne ein Stück Deiner Logdatei mailen (meine Adresse hast Du per PN) ...
Grüße
bastla
Wie schon oben erwähnt, habe ich mit einigen Deiner Beispielzeilen eine Testdatei erstellt und nur LF für Zeilenumbrüche verwendet:
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=0)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=1)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=2)
access-list insideACL line 20 extended permit tcp 10.100.130.0 255.255.255.0 10.100.147.160 255.255.255.224 range 5988 5989 (hitcnt=0)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=0)
access-list insideACL line 20 extended permit tcp 10.100.130.0 255.255.255.0 10.100.147.160 255.255.255.224 range 5990 5991 (hitcnt=4)
access-list insideACL line 20 extended permit tcp 10.100.130.0 255.255.255.0 194.173.20.32 255.255.255.240 range 10000 10200 (hitcnt=1)
access-list insideACL line 20 extended permit tcp 10.100.130.0 255.255.255.0 194.173.20.32 255.255.255.240 range 11000 11100 (hitcnt=0)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=123)
findstr "(hitcnt=[^0][0-9]*)" deine_log.txt>neue_log.txt
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=1)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=2)
access-list insideACL line 20 extended permit tcp 10.100.130.0 255.255.255.0 10.100.147.160 255.255.255.224 range 5990 5991 (hitcnt=4)
access-list insideACL line 20 extended permit tcp 10.100.130.0 255.255.255.0 194.173.20.32 255.255.255.240 range 10000 10200 (hitcnt=1)
access-list NoNAT-inside line 2 extended permit ip 10.100.96.0 255.255.255.128 172.16.21.0 255.255.255.0 (hitcnt=123)
Du kannst mir aber gerne ein Stück Deiner Logdatei mailen (meine Adresse hast Du per PN) ...
Grüße
bastla
Fix und fertig!
Falls dein System VBScript ausführt, sollte es so klappen (bei mir tut es dies zumindest)
Kopiere den Quelltext in eine neue Textdatei und speichere diese mit der Dateiendung .vbs .
Zeile 7 und 8 musst du noch anpassen.
Falls dein System VBScript ausführt, sollte es so klappen (bei mir tut es dies zumindest)
Kopiere den Quelltext in eine neue Textdatei und speichere diese mit der Dateiendung .vbs .
Zeile 7 und 8 musst du noch anpassen.
'**********************************************************
'author = aFankhauser (www.hiddenAlpha.ch)
'version = 1.0.1
'built = 29.07.2009
'**********************************************************
'Einstellungen
vD1 = "Quelle.txt" 'Pfad der Quelldatei
vD2 = "Ziel.txt" 'Pfad der Zieldatei
const titel="Line sorter"
if MsgBox("Script ausführen?",4,titel)<>6 Then rEnde "abbr"
set oFso=CreateObject("scripting.FileSystemObject")
set oShell=CreateObject("wscript.shell")
if oFso.fileexists(vD1)=False Then
MsgBox "Quelldatei kann nicht gefunden werden.",48,titel
rEnde ""
End If
if oFso.fileexists(vD2)=True Then
if MsgBox("Die Datei" & vbCrlf & vbCrlf & vD2 & vbCrlf & vbCrlf & "Existiert bereits." & vbCrlf & "Datei ersetzen?",32+4,titel)<>vbYes Then rEnde "abbr"
End If
set oD1 = oFso.opentextfile(vD1,1,1)
set oD2 = oFso.opentextfile(vD2,2,1)
Do Until oD1.atEndOfStream
vA1 = oD1.readline
'Filtert die Zahl heraus
aA2 = Split(vA1,"(")
aA3 = Split(aA2(1),"=")
aA4 = Split(aA3(1),")")
vA2 = aA4(0)
if vA2>0 Then
oD2.write vA1 & vbLf
End If
Loop
oD1.close
oD2.close
set oD1 = Nothing
set oD2 = Nothing
rEnde "fertig"
'--------------------------------------------------Routinen--------------------------------------------------
Sub rEnde(art)
Select Case art
Case "abbr"
MsgBox "Forgang wurde abgebrochen",,titel
case "fertig"
MsgBox "Filterung abgeschlossen.",64,titel
End Select
wscript.quit
End Sub
@aFankhauser
Soll das ein verfrühtes Weihnachtsgeschenk für matt1967 sein (im Vorjahr ging sich's ja leider nicht mehr ganz aus)?
Grüße
bastla
Soll das ein verfrühtes Weihnachtsgeschenk für matt1967 sein (im Vorjahr ging sich's ja leider nicht mehr ganz aus)?
Grüße
bastla
@aFankhauser
... oder, um aus dem Regelwerk des Bremer Alpenvereins zu zitieren:
"Keine Mund-zu-Mundbeatmung bei Verunglückten, die schon länder als sechs Monate liegen"
Grüße
Biber
... oder, um aus dem Regelwerk des Bremer Alpenvereins zu zitieren:
"Keine Mund-zu-Mundbeatmung bei Verunglückten, die schon länder als sechs Monate liegen"
Grüße
Biber
@Biber
Grüße
bastla
"Keine Mund-zu-Mundbeatmung bei Verunglückten, die schon länger als sechs Monate liegen"
Ist ja in der Veterinärmedizin ähnlich (dort allerdings hinsichtlich der "Mund-zu-Hundbeatmung" ) ...Grüße
bastla