Unten ist der Inhalt:
Subject:
Security ID: S-1-5-21-3368353891-1012177287-890106238-22451
Account Name: ChamaraKer
Account Domain: JIC
Logon ID: 0x1fffb
Object:
Object Server: Security
Object Type: File
Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
Handle ID: 0x11dc
Ich muss die Wörter nach dem Object Name:
Wort in dieser Zeile erfassen . Welches ist D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
.
Wie kann ich das machen?
^.*\bObject Name\b.*$
Übereinstimmungen - Objektname
regex
expression
regex-negation
regex-lookarounds
Chamara Keragala
quelle
quelle
D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
(?<=Object Name:)([^\n\r]*)
Siehe hier[^\r\n]+(?=\s+Handle ID:)
Für das, was Sie versuchen, sollte dies funktionieren.
\K
setzt den Startpunkt des Spiels zurück.\bObject Name:\s+\K\S+
Sie können das Gleiche tun, um Ihre
Security ID
Übereinstimmungen zu erhalten.quelle
\K
+1 Kumpel. Das ist die Antwort.\K
funktioniert nicht in Javascript, irgendwelche anderen Lösungen?Du bist fast da. Verwenden Sie den folgenden regulären Ausdruck (mit aktivierter mehrzeiliger Option).
\bObject Name:\s+(.*)$
Das komplette Match wäre
Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
während die erfasste Gruppe eine enthalten würde
D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
Wenn Sie den Dateipfad direkt erfassen möchten, verwenden Sie
(?m)(?<=\bObject Name:).*$
quelle
D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
Kann ich das nicht tun?Security ID:
(?m)(?<=\bObject Name:).*$
?(?m)(?<=\bObject Name:\s{4}).*$
aber es würde für andere wie fehlschlagen,Security ID:
weil die Menge der Leerzeichen variiert.Dies kann für Sie je nach verwendeter Sprache funktionieren:
(?<=Object Name:).*
Es ist ein positiver Blick hinter die Behauptung. Weitere Informationen finden Sie hier .
Mit JavaScript funktioniert es jedoch nicht. In Ihrem Kommentar habe ich gelesen, dass Sie es für Logstash verwenden. Wenn Sie GROK-Parsing für Logstash verwenden, funktioniert dies. Sie können es hier selbst überprüfen:
https://grokdebug.herokuapp.com/
quelle
Dies ist eine Python-Lösung.
import re line ="""Subject: Security ID: S-1-5-21-3368353891-1012177287-890106238-22451 Account Name: ChamaraKer Account Domain: JIC Logon ID: 0x1fffb Object: Object Server: Security Object Type: File Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log Handle ID: 0x11dc""" regex = (r'Object Name:\s+(.*)') match1= re.findall(regex,line) print (match1) *** Remote Interpreter Reinitialized *** >>> ['D:\\ApacheTomcat\x07pache-tomcat-6.0.36\\logs\\localhost.2013-07-01.log'] >>>
quelle
Hier ist ein schnelles Perl-Skript, um das zu bekommen, was Sie brauchen. Es braucht ein paar Leerzeichen.
#!/bin/perl $sample = <<END; Subject: Security ID: S-1-5-21-3368353891-1012177287-890106238-22451 Account Name: ChamaraKer Account Domain: JIC Logon ID: 0x1fffb Object: Object Server: Security Object Type: File Object Name: D:\\ApacheTomcat\\apache-tomcat-6.0.36\\logs\\localhost.2013- 07-01.log Handle ID: 0x11dc END my @sample_lines = split /\n/, $sample; my $path; foreach my $line (@sample_lines) { ($path) = $line =~ m/Object Name:([^s]+)/g; if($path) { print $path . "\n"; } }
quelle