我需要使用powershell从文本文件中获取某些值
我需要从具有类似数据类型的文本文件中获取特定值,如用户名(仅数字)、所有者名称(冒号后)和权限:我需要使用powershell从文本文件中获取某些值,powershell,text-parsing,Powershell,Text Parsing,我需要从具有类似数据类型的文本文件中获取特定值,如用户名(仅数字)、所有者名称(冒号后)和权限: Username: A044303 Owner: HUMARA_AZIZ_DA_201902 Account: CORPACCT UIC: [107,713] ([CORPACNT,A044303]) CLI: DCL Tab
Username: A044303 Owner: HUMARA_AZIZ_DA_201902
Account: CORPACCT UIC: [107,713] ([CORPACNT,A044303])
CLI: DCL Tables:
NETMBX TMPMBX
Default Privileges:
NETMBX TMPMBX
如何使用powershell命令执行此操作?试试这个
$test = "Username: A044303 Owner: HUMARA_AZIZ_DA_201902 Account: CORPACCT UIC: [107,713] ([CORPACNT,A044303]) CLI: DCL Tables: NETMBX TMPMBX Default Privileges: NETMBX TMPMBX"
if ($test -match "^Username: [a-zA-Z]([0-9]+) Owner: ([A-Z_]+[0-9]+)") {
write-host "UserName: "$matches[1]
write-host "Owner: "$matches[2]
}
您可以使用以下方法:
- 使用
,将内容拆分为属性名称及其值交替出现的数组-split
- 通过处理生成的数组来填充(已排序)
.Username
(或['Username']
)
输出$htProps
会产生以下结果({…}
表示属性包含一个值数组):
名称值
---- -----
用户名:A044303
业主:HUMARA_AZIZ_DA_201902
帐户:CORPACCT
UIC:{[107713],([CORPACNT,A044303]))
CLI:DCL
表:{NETMBX,TMPMBX}
默认权限:{NETMBX,TMPMBX}
例如,
$htProps.UserName
,然后返回A044303
请允许我给你给新来者的标准建议:如果你有答案,你将通过向未来的读者展示解决问题的方法来帮助他们。要接受答案,请单击大标题✓ 答案左侧大数字下方的符号(您将获得2点声誉积分)。如果你至少有15个声望点,你也可以投票给其他有用的答案(也可以选择被接受的答案)。如果您的问题尚未解决,请提供反馈,或者,如果您自己找到了解决方案。
$htProps = [ordered] @{}
$i = 0;
(Get-Content -Raw file.txt) -split '((?:Default )?\w+:)' -ne '' | ForEach-Object {
if ($i++ % 2) { $htProps[$propName] = $(-split $_.Trim()) }
else { $propName = $_ }
}