![]() |
Получить значения из файла
Добрый день.
Помогите с решением задачи по get-content хотя возможно будет уместно и Select-String. Смысл в том, что есть файл логов, в нем полная мешанина, но есть два значения UserName и Password. Хотелось что бы скрипт выдавал значения UserName и Password. В самом файле они выглядят так: "UserName":"login" "Password":"Pass" Пробовал вот так: Код:
get-content "C:\1.log" |?{$_ -match "UserName"}|%{$Matches[0]} Пробовал еще вот так: Код:
gc "123.log" |sls '(?<=userName=).+?(?=&RememberMe)' -all Можно ли укоротить до вывода хотя бы: userName=USERNAME&Password=Password Пример лога:
*.*.*.* - [30/Sep/2000:00:00:38 +0300] "/login/" "POST /login/ HTTP/1.1" 302 325 "" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" 0.026 <"userName=USERNAME&Password=Password&RememberMe=true&BackUrl=&g-recaptcha-response=" >"{"ErrorMessage":null,"CaptchaModel":{"ShowCaptcha":false,"ErrorMessage":null},"UserName":"USERNAME ","Password":"Password","RememberMe":true,"LoginRedirectUrl":null,"RedirectUrl":null,"BackUrl":"","C hangePasswordUrl":null,"RegistrationUrl":null}" |
Нашел похожую тему http://forum.oszone.net/thread-345862.html
Подскажите, а gc может вывод делать в файл? |
Код:
cls |
Чуть точнее:
Код:
(gc "D:\temp\log.txt") -replace '.*UserName\":\"(.*?)\",\"Password\":\"(.*?)\".*',"`$1`n`$2" > "D:\temp\login-pass.txt" |
DJ Mogarych, подскажите, а можно брать начало строки?
Из примера, что б получилось: *.*.*.* - UserName - Password За *.*.*.* прячется ip адрес, я так понимаю что его можно забрать конструкцией: Код:
?{$_ -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"}|%{$Matches[0]} |
Код:
(gc "D:\temp\log.txt") -replace '^(.*?) - .*UserName\":\"(.*?)\",\"Password\":\"(.*?)\".*',"`$1 - `$2 - `$3" > "D:\temp\login-pass.txt" |
DJ Mogarych, подскажите, а можно ли сделать так, что б было условие ip и только UserName с Password? Вопрос связан с тем, что у меня есть выборки с ip без UserName и Password.
|
Цитата:
|
Цитата:
Код:
-match ip -and UserName -and Password Код:
-match ip -or UserName -and Password |
В коде сейчас вообще нет никаких условий, он просто выкидывает из строки всё лишнее. Т. е, вам нужно, чтобы присутствовали все 3 компонента? Или два (UserName -and Password)?
И приведите примеры строк, не соответствующих условиям. |
Код:
cLs |
Время: 00:25. |
Время: 00:25.
© OSzone.net 2001-