Почему движения мыши и курсора становятся неустойчивыми, когда я копирую всю карту памяти на другую карту памяти?

icarus уже ответил на этот вопрос в awk, так что вот как извлечь дату и идентификатор в переменные, а данные события в хэш (ассоциативный массив )с помощьюperl:

#!/usr/bin/perl -l

use strict;

while(<>) {
  if (m/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}).+?\sID\s(\[\d{4}\]).*?Data -> (.*)$/) {
    my ($date,$id,$eventdata) = ($1,$2,$3);

    print $date;
    print $id;

    # decorate the key names with a tab (i.e. add a tab before each) 
    $eventdata =~ s/([^[:blank:]]+) *= */\t$1=/g;
    # remove tab from beginning of $eventdata
    $eventdata =~ s/^\t//;       #/

    # split $eventdata on tabs, and split again into key=value pairs
    # and store in %data hash.    
    my %data = map { my($k,$v) = split("=",$_,2); $k => $v } split(/ *\t/,$eventdata);

    foreach my $key (sort keys %data) { printf "%s=%s\n", $key, $data{$key} };
  };
};

(Комментарий #/предназначен только для исправления неработающей подсветки синтаксиса Perl U&L)

Обратите внимание, что ,2в конце операции split("=",$_,2)каждая пара ключ=значение разбивается максимум на два поля :все до первого=символ и все, что после него. Это означает, что не имеет значения, содержит ли значение символ =. Такие вещи гораздо проще сделать в perl, чем в awk. Работа с регулярными выражениями и группами захвата также упрощается, как показано в первых двух строках в начале цикла while(<>).

Сохранить как, например. kei.pl, сделайте его исполняемым с помощью chmod +x kei.plи запустите так:

$./kei.pl input 
2017-03-21T02:00:00
[4624]
AuthenticationPackageName=Negotiate
ImpersonationLevel=%%1122
IpAddress=10.0.0.0
IpPort=10.5.3.2
KeyLength=0
LmPackageName=Stainless
LogonGuid={00344000-0000-0000-0000-0000000003440}
LogonProcessName=Lxxoi
LogonType=8
ProcessId=0x0000000000000244
ProcessName=C:/Windows/System32/services.exe
SubjectDomainName=WORKGROUP
SubjectLogonId=0x00000000000004j7
SubjectUserName=PRETENDERS$
SubjectUserSid=S-1-5-18
TargetDomainName=NT AUTHORITY
TargetLogonId=0x00000000000003e7
TargetUserName=SYSTEMS
TargetUserSid=X-12-54-181
TransmittedServices=-
WorkstationName=-

Кстати, если вы хотите, чтобы дата и идентификатор также были в хеше, добавьте следующее после строки %data = map...(и удалите строки print $date;и print $id;:

$data{'DATE'} = $date;
$data{'ID'} = $id;
0
01.09.2021, 20:23
0 ответов

Теги

Похожие вопросы