将文件文本转换为哈希表并使用键读取值?
Converting file text to Hashtable and reading value using keys?
所以我有一个看起来像这样的文件:
A=www.google.com
B=www.yahoo.com
现在,我想将此文本文件转换为哈希表并使用键(即 A 或 B)读取值
这是我想出的:
$hash = Get-Content .\test.txt
$hash[1].Split('=')[1]
上面的脚本工作正常,除了我想使用键而不是数字
类似于:
$hash['B'].Split('=')[1]
您需要先将文件数据转换为散列table 对象。有几种方法可以将数据添加到 hashtable 对象。如果它们具有 key=value
.
格式,则以下内容会将所有行转换为散列 table 值
$hash = [ordered]@{}
Get-Content test.txt | Foreach-Object {
$key,$value = ($_ -split '=',2).Trim()
$hash[$key] = $value
}
# Value Retrieval syntax
$hash.A
$hash['A']
如果要定位文件中的特定行,可以执行以下操作:
$hash = [ordered]@{}
$data = Get-Content test.txt
$temp = $data[1] -split '='
$hash[$temp[0]] = $temp[1]
# Value Retrieval Syntax
$hash.B
$hash['B']
从技术上讲,您可以使用两个命令转换文件数据,但顺序可能会有所不同。我不确定 ConvertFrom-StringData
是否再受欢迎。
$hash = Get-Content test.txt -Raw | ConvertFrom-StringData
# Value Retrieval Syntax
$hash.B
$hash['B']
第一个代码片段的输出:
Get-Content test.txt
A=www.google.com
B=www.yahoo.com
$hash = [ordered]@{}
Get-Content test.txt | Foreach-Object {
$temp = ($_ -split '=').Trim()
$hash[$temp[0]] = $temp[1]
}
$hash
Name Value
---- -----
A www.google.com
B www.yahoo.com
$hash['B']
www.yahoo.com
所以我有一个看起来像这样的文件:
A=www.google.com
B=www.yahoo.com
现在,我想将此文本文件转换为哈希表并使用键(即 A 或 B)读取值
这是我想出的:
$hash = Get-Content .\test.txt
$hash[1].Split('=')[1]
上面的脚本工作正常,除了我想使用键而不是数字
类似于:
$hash['B'].Split('=')[1]
您需要先将文件数据转换为散列table 对象。有几种方法可以将数据添加到 hashtable 对象。如果它们具有 key=value
.
$hash = [ordered]@{}
Get-Content test.txt | Foreach-Object {
$key,$value = ($_ -split '=',2).Trim()
$hash[$key] = $value
}
# Value Retrieval syntax
$hash.A
$hash['A']
如果要定位文件中的特定行,可以执行以下操作:
$hash = [ordered]@{}
$data = Get-Content test.txt
$temp = $data[1] -split '='
$hash[$temp[0]] = $temp[1]
# Value Retrieval Syntax
$hash.B
$hash['B']
从技术上讲,您可以使用两个命令转换文件数据,但顺序可能会有所不同。我不确定 ConvertFrom-StringData
是否再受欢迎。
$hash = Get-Content test.txt -Raw | ConvertFrom-StringData
# Value Retrieval Syntax
$hash.B
$hash['B']
第一个代码片段的输出:
Get-Content test.txt A=www.google.com B=www.yahoo.com $hash = [ordered]@{} Get-Content test.txt | Foreach-Object { $temp = ($_ -split '=').Trim() $hash[$temp[0]] = $temp[1] } $hash Name Value ---- ----- A www.google.com B www.yahoo.com $hash['B'] www.yahoo.com