如何使用 Powershell 处理自定义日志数据?
How to process Custom log data using Powershell?
我有一个日志文件,其中的数据用“|”分隔象征。喜欢
"Username|servername|access|password|group"
"Username|servername|access|password|group"
我需要验证数据。并且,如果组列(记录)缺少信息或为空。我只需要将该行写入另一个文件。请帮我。提前致谢。
如果您的组列总是在同一个地方,看起来确实如此,您可以使用拆分方法。您当然可以整理代码。我使用下面的示例来说明如何使用 split。
foreach 语句用于遍历文件中的每一行。
if (!$($groupstring.Split('|')[4])) 检查它是否为空。
$groupstring = 'Username|servername|access|password|group'
$groupstring.Split('|')[4]
foreach ($item in $collection)
{
if (!$($groupstring.Split('|')[4]))
{
Write-Host "variable is null"
}
}
希望这对您有所帮助。
谢谢,蒂姆。
如果您只是检查丢失的数据,您可以 运行 使用 regex
的 '(\S+\|){4}\S+' 进行快速检查。将 Get-Content
与 -ReadCount
参数一起使用,您可以一次处理几千条记录,最大限度地减少磁盘 i/o 和内存使用,而无需一次处理一条记录。
Get-Content $inputfile -ReadCount 2000 |
foreach {
$_ -notmatch '(\S+\|){4}\S+' |
Add-Content $outputfile
}
您可以将 'Import-CSV
与 -Delimiter '|'
一起使用。如果您的文件没有 header 行,您还需要使用 -Header
来定义它。然后,您可以使用 Where
过滤空组行,并再次使用 Export-CSV
和 -Delimiter
来创建仅包含这些行的新文件。
例如:
Import-CSV 'YourLog.log' -Delimiter '|' -Header 'Username','Servername','Access','Password','Group' |
Where {$_.'Group' -eq ''} |
Export-CSV 'EmptyGroupLines.log' -Delimiter '|'
我有一个日志文件,其中的数据用“|”分隔象征。喜欢
"Username|servername|access|password|group"
"Username|servername|access|password|group"
我需要验证数据。并且,如果组列(记录)缺少信息或为空。我只需要将该行写入另一个文件。请帮我。提前致谢。
如果您的组列总是在同一个地方,看起来确实如此,您可以使用拆分方法。您当然可以整理代码。我使用下面的示例来说明如何使用 split。
foreach 语句用于遍历文件中的每一行。 if (!$($groupstring.Split('|')[4])) 检查它是否为空。
$groupstring = 'Username|servername|access|password|group'
$groupstring.Split('|')[4]
foreach ($item in $collection)
{
if (!$($groupstring.Split('|')[4]))
{
Write-Host "variable is null"
}
}
希望这对您有所帮助。 谢谢,蒂姆。
如果您只是检查丢失的数据,您可以 运行 使用 regex
的 '(\S+\|){4}\S+' 进行快速检查。将 Get-Content
与 -ReadCount
参数一起使用,您可以一次处理几千条记录,最大限度地减少磁盘 i/o 和内存使用,而无需一次处理一条记录。
Get-Content $inputfile -ReadCount 2000 |
foreach {
$_ -notmatch '(\S+\|){4}\S+' |
Add-Content $outputfile
}
您可以将 'Import-CSV
与 -Delimiter '|'
一起使用。如果您的文件没有 header 行,您还需要使用 -Header
来定义它。然后,您可以使用 Where
过滤空组行,并再次使用 Export-CSV
和 -Delimiter
来创建仅包含这些行的新文件。
例如:
Import-CSV 'YourLog.log' -Delimiter '|' -Header 'Username','Servername','Access','Password','Group' |
Where {$_.'Group' -eq ''} |
Export-CSV 'EmptyGroupLines.log' -Delimiter '|'