我想在 Powershell 脚本中将字符串从 : 拆分为 \n
I want to split a string from : to \n in Powershell script
我正在使用一个配置文件,其中包含如下所示的一些信息。
User1:xyz@gmail.com
User1_Role:Admin
NAME:sdfdsfu4343-234324-ffsdf-34324d-dsfhdjhfd943
ID:xyz@abc-demo-test-abc-mssql
Password:rewrfsdv34354*fds*vdfg435434
我想在我的 Powershell 脚本中将每个值从*: 拆分为换行符*。
我正在使用 -split '[: \n]' 它完美匹配,直到值中没有 ''。如果有一个 '*' 它将获取到那个。例如,对于密码,它只匹配 rewrfsdv34354。这是我的代码:
$i = 0
foreach ($keyOrValue in $Contents -split '[: *\n]') {
if ($i++ % 2 -eq 0) {
$varName = $keyOrValue
}
else {
Set-Variable $varName $keyOrValue
}
}
我需要将 : 之后的所有字符匹配到 \n。请分享您的想法。
最好在这里执行两个单独的拆分,如果代码由于某种原因出错,这会使事情更容易解决,尽管 $i % 2 -eq 0
部分是一个很好的选择 key/value.
我会这样做:
# Split the Contents variable by newline first
foreach ($line in $Contents -split '[\n]') {
# Now split each line by colon
$keyOrValue = $line -split ':'
# Then set the variables based on the parts of the colon-split
Set-Variable $keyOrValue[0] $keyOrValue[1]
}
您也可以转换为哈希图并从那里开始,例如:
$h = @{}
gc config.txt | % { $key, $value = $_ -split ' *: *'; $h[$key] = $value }
或 ConvertFrom-StringData
:
$h = (gc -raw dims.txt) -replace ':','=' | ConvertFrom-StringData
现在您可以方便地访问键和值,例如:
$h
输出:
Name Value
---- -----
Password rewrfsdv34354*fds*vdfg435434
User1 xyz@gmail.com
ID xyz@abc-demo-test-abc-mssql
NAME sdfdsfu4343-234324-ffsdf-34324d-dsfhdjhfd943
User1_Role Admin
或者只有键:
$h.keys
输出:
Password
User1
ID
NAME
User1_Role
或只有值:
$h.values
输出:
rewrfsdv34354*fds*vdfg435434
xyz@gmail.com
xyz@abc-demo-test-abc-mssql
sdfdsfu4343-234324-ffsdf-34324d-dsfhdjhfd943
Admin
或具体值:
$h['user1'] + ", " + $h['user1_role']
输出:
xyz@gmail.com, Admin
等等
我正在使用一个配置文件,其中包含如下所示的一些信息。
User1:xyz@gmail.com
User1_Role:Admin
NAME:sdfdsfu4343-234324-ffsdf-34324d-dsfhdjhfd943
ID:xyz@abc-demo-test-abc-mssql
Password:rewrfsdv34354*fds*vdfg435434
我想在我的 Powershell 脚本中将每个值从*: 拆分为换行符*。 我正在使用 -split '[: \n]' 它完美匹配,直到值中没有 ''。如果有一个 '*' 它将获取到那个。例如,对于密码,它只匹配 rewrfsdv34354。这是我的代码:
$i = 0
foreach ($keyOrValue in $Contents -split '[: *\n]') {
if ($i++ % 2 -eq 0) {
$varName = $keyOrValue
}
else {
Set-Variable $varName $keyOrValue
}
}
我需要将 : 之后的所有字符匹配到 \n。请分享您的想法。
最好在这里执行两个单独的拆分,如果代码由于某种原因出错,这会使事情更容易解决,尽管 $i % 2 -eq 0
部分是一个很好的选择 key/value.
我会这样做:
# Split the Contents variable by newline first
foreach ($line in $Contents -split '[\n]') {
# Now split each line by colon
$keyOrValue = $line -split ':'
# Then set the variables based on the parts of the colon-split
Set-Variable $keyOrValue[0] $keyOrValue[1]
}
您也可以转换为哈希图并从那里开始,例如:
$h = @{}
gc config.txt | % { $key, $value = $_ -split ' *: *'; $h[$key] = $value }
或 ConvertFrom-StringData
:
$h = (gc -raw dims.txt) -replace ':','=' | ConvertFrom-StringData
现在您可以方便地访问键和值,例如:
$h
输出:
Name Value
---- -----
Password rewrfsdv34354*fds*vdfg435434
User1 xyz@gmail.com
ID xyz@abc-demo-test-abc-mssql
NAME sdfdsfu4343-234324-ffsdf-34324d-dsfhdjhfd943
User1_Role Admin
或者只有键:
$h.keys
输出:
Password
User1
ID
NAME
User1_Role
或只有值:
$h.values
输出:
rewrfsdv34354*fds*vdfg435434
xyz@gmail.com
xyz@abc-demo-test-abc-mssql
sdfdsfu4343-234324-ffsdf-34324d-dsfhdjhfd943
Admin
或具体值:
$h['user1'] + ", " + $h['user1_role']
输出:
xyz@gmail.com, Admin
等等