如何从文本文件中提取信息?
|
我有来自不同服务器的一系列Log文件(文本格式),其中包含信息列。我有两个PowerShell脚本(如下),它们从某些列中查找并计算详细信息,并输出一个文本文件。
脚本1(合并的RTP数据包丢失)
该脚本将查看日志文件中的“ Details”列,并计算所有“ XX个RTP数据包已丢失”(例如57个RTP数据包已丢失)
该脚本可以在包含(* .log)文件的任何目录或文件夹中执行,并且将为您提供丢失的RTP数据包总数。
$sum = 0
foreach ($i in dir -filter *.log -Rec)
{
$sum += (gc $i.fullname | select -Skip 5 | ConvertFrom-Csv -Delimiter \"`t\" | ? {$_.Details - match \"^(\\d+)\"} |% {$matches[1]} | Measure-Object -Sum).Sum
}
$sum | Tee-Object -FilePath .\\CombinedResults.txt
[Console]::Write(\"Press any key to continue . . . \")
[Console]::ReadKey()
脚本2(实体丢失的总RTP数据包)
该脚本将查看日志文件中的“ Details”列,并计算所有的“ XX个RTP数据包已丢失”(例如,57个RTP数据包已丢失)。您可以在\“实体\”列中找到每个实体(相机)的实体名称丢失的总数据包。
该脚本可以在包含(* .log)文件的任何目录或文件夹中执行,并且将为您提供每个实体丢失的RTP数据包总数。
$out=foreach ($i in dir -filter *.log -Rec)
{
$cameras = gc $i.fullname | select -Skip 5 | ConvertFrom-Csv -Delimiter \"`t\" | group \"Entity \"
$cameras | select Name, @{n=\"Total\";e={ ($_.group | ? {$_.Details -match \"^(\\d+)\"} |% {$matches [1]} | Measure-Object -Sum).Sum}} | ? {$_.Total -gt 0}
}
$out | Tee-Object -FIlePath .\\ByEntityResults.txt
[Console]::Write(\"Press any key to continue . . . \")
[Console]::ReadKey()
这是我要实现的目标:
这些日志文件来自各种服务器,我希望结果可以由服务器过滤。在左上角的日志文件中,它指出\“计算机名称:\”
对于这两个脚本,我希望按“计算机名称”过滤结果。
最终结果示例:
Script # 1
Computer Name: T3-Archiver22
Total RTP Packet(s) lost = 43243
Computer Name: T3-Archiver24
Total RTP Packet(s) lost = 8837
Script # 2
Computer Name: T3-Archiver22
Entity Name: Total RTP Packet(s) lost
(7233)C2-GF-127 - 10.20.13.69(P) 54
.
.
.
Computer Name: T3-Archiver24
Entity Name: Total RTP Packet(s) lost
(6547)U2 Z-C14 27
.
.
.
没有找到相关结果
已邀请:
1 个回复
慷祈霖黑