Войти

Показать полную графическую версию : [решено] Обработка текстовых файлов и вывод всех значение в один файл


Snap_Naprolom
24-03-2016, 13:39
Есть папка с файлами, где имя файла=дата (таких файлов десятки), содержимое файлов вида :

20160324.txt

192.168.0.1 65656
192.168.0.5 676711
192.168.1.23 566756
192.168.7.11 142427

Т.е адрес и за ним некое значение

Каким образом пройтись по всем файлам и вывести все в один файл с данными:
IP;20160324;20160323
192.168.0.1;65656;65657
192.168.0.5;676711;767143
192.168.1.23;566756;566759
192.168.7.11;142427;142426

В первой строке название файлов
В следующих адрес и дальше значения, разделенные табуляцией или любыми другими знаками
Готовый скрипт не прошу(в идеале было бы конечно неплохо), направьте хотя бы где почитать про такую обработку и вывод в файл

Kazun
24-03-2016, 14:46
$log = "C:\log\log.txt"
$DT=New-Object DateTime
$files = Get-ChildItem *.txt | Where {[DateTime]::TryParseExact($_.BaseName,"yyyyMMdd",[CultureInfo]::InvariantCulture,"None",[ref][datetime]$dt)}

"IP;{0}" -f (($files | % {$_.BaseName}) -join ";") | Out-File $log
$files | Get-Content | Where {$_ -match "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"} | Group {$_.split(" ")[0]} | Foreach {
"{0};{1}" -f $_.Name,(($_.Group | Foreach {$_.split(" ")[-1].Trim()}) -join ";")
} | Out-File $log -Append

Snap_Naprolom
24-03-2016, 15:44
Kazun, Спасибо огромное!! Работает на 200%




© OSzone.net 2001-2012