Powershell解析未格式化的文本文件



我正在尝试解析一个基本上采用以下格式的文本文件:

姓名:James

地点:英国

我认为使用SelectString:最有意义

$getName = "C:account.txt"
Select-String -Path  $getName -Pattern 'Name:   '

然而,这将远远超出我的需要。有人能告诉我如何获得";詹姆斯;以及";UK";作为不同的字符串。

谢谢!

你的意思是。。。

# Create user data sample and use regex match to get name and location only
Clear-Host
@'
Name: James
SomeOtherData: 
Location: UK
MoreStuff: 
'@ | Out-File -LiteralPath 'D:Tempaccount.txt'

Get-Content -Path 'D:Tempaccount.txt' | 
ForEach-Object {$PSItem | Select-String -Pattern '^(Name:s|Location:s).*'}
# Results
<#
Name: James
Location: UK
#>

或者这个。。。

Get-Content -Path 'D:Tempaccount.txt' | 
ForEach-Object {($PSItem | Select-String -Pattern '^(Name:s|Location:s).*') -replace '.*:s'}
# Results
<#
James
UK
#>

有很多方法可以做到这一点。含义,如图所示的列表格式或表格格式。

此外,还可以查看ConvertFrom-String cmdlet,将字符串转换为对象。

Clear-Host
$template = @'
{Property*:Name:} {Value:James}
{Property*:Location:} {Value:UK}
'@
$testText = @'
Name: James
SomeOtherData: 
Location: UK
MoreStuff: 
'@

我正在使用PowerShell变量压缩来分配给变量,同时输出到屏幕。"这不是必需的。"这只是在需要的时候同时做两件事的捷径。

(
$PersonalData = $testText | 
ConvertFrom-String -TemplateContent $template
)
# Results
<#
Property  Value
--------  -----
Name:     James
Location: UK  
#>
$PersonalData.Property
# Results
<#
Name:
Location:
#>

$PersonalData.Value
# Results
<#
James
UK
#>
(
$PersonalData = Get-Content -Path 'D:Tempaccount.txt'  | 
ConvertFrom-String -TemplateContent $template
)
# Results
<#
Property  Value
--------  -----
Name:     James
Location: UK  
#>

所有上述都有很好的文档,PowerShell帮助文件,MS Docs网站,博客。。。

"PowerShell正在分析文本文件"。。。以及Youtube上的视频。

相关内容

  • 没有找到相关文章

最新更新