什么是*Nix';切割';Powershell中的命令?
我在配置文件(sample.cfg)中有以下内容 我试图通过在PowerShell中使用什么是*Nix';切割';Powershell中的命令?,powershell,split,powershell-2.0,Powershell,Split,Powershell 2.0,我在配置文件(sample.cfg)中有以下内容 我试图通过在PowerShell中使用拆分,在:之后存储一个each值。但我不能生产需要的产品 有人能告诉我如何使用PowerShellsplit解决上述问题吗?您可以使用Get Content读取文件的内容,然后通过管道将每一行传输到每个对象的ForEach,然后在每一行上使用split命令,将数组中的第二项如下所示: $filename = "sample.cfg" Get-Content $filename | ForEach-Objec
拆分,在:
之后存储一个each值。但我不能生产需要的产品
有人能告诉我如何使用PowerShellsplit
解决上述问题吗?您可以使用Get Content
读取文件的内容,然后通过管道将每一行传输到每个对象的ForEach
,然后在每一行上使用split命令,将数组中的第二项如下所示:
$filename = "sample.cfg"
Get-Content $filename | ForEach-Object {
$_.split(":")[1]
}
输出
300
2
10.0.0.9
1840
All Values:
Name Value
---- -----
port 1840
min 2
server 10.0.0.9
hour 300
Individual value:
1840
更新
我更喜欢@AnsgarWiechers的方法,但是如果您确实需要特定命名的值,您可以创建一个哈希表并用值替换名称:
$configValues = @{
hour = "Time_Zone_Variance(Mins)"
min = "Alert_Interval(Mins)"
server = "Server"
port = "Port"
}
Get-Content $filename | ForEach-Object {
# Courtesy of Ansgar Wiechers
$key, $value = $_ -split ':', 2
foreach($configValuesKey in $($configValues.keys)) {
if ($configValues[$configValuesKey] -eq $key)
{
$configValues[$configValuesKey] = $value
}
}
}
write-host "`nAll Values:"
$configValues
write-host "`nIndividual value:"
$configValues.port
输出
300
2
10.0.0.9
1840
All Values:
Name Value
---- -----
port 1840
min 2
server 10.0.0.9
hour 300
Individual value:
1840
我想您不想只拆分行,而是实际创建键/值对。这可以通过以下方式实现:
$config = @{}
Get-Content 'C:\path\to\sample.cfg' | % {
$key, $value = $_ -split ':', 2
$config[$key] = $value
}
您还可以使用cmdlet:
-replace
操作是必要的,因为convertfromstringdata
要求键和值之间用=
分隔。如果您可以将配置文件中的分隔符从:
更改为=
,则可以使用ConvertFrom-StringData$\
而无需替换。这是怎么回事
function cut {
param(
[Parameter(ValueFromPipeline=$True)] [string]$inputobject,
[string]$delimiter='\s+',
[string[]]$field
)
process {
if ($field -eq $null) { $inputobject -split $delimiter } else {
($inputobject -split $delimiter)[$field] }
}
}
PS C:\> 'hi:there' | cut -f 0 -d :
hi
PS C:\> 'hi:there' | cut -f 1 -d :
there
PS C:\> 'hi:there' | cut -f 0,1 -d :
hi
there
PS C:\> 'hi:::there' | cut -f 0 -d :+
hi
PS C:\> 'hi there' | cut
hi
there
对于更简洁的语法,这也可以做到:
((获取内容“your file.txt”)-Split):[1]
因此,使用-Split
方法的诀窍是让获取内容
返回一个字符串
对象(实际上也可以使用别名cat
),然后从得到的字符串[]
对象中使用括号提取n
第项
注意:由于-Split
不是该命令的参数名称,因此使用-Split
而不在获取内容
周围加括号将不起作用。。。David谢谢,您能告诉我如何将每个值存储在变量中,如$hour=300、$min=2、$server=10.0.0.9、$port=1840
对于单独命名的变量,您可以执行$configValues.Keys |%{New variable-Name$\uvalue$configValues[$\u]}
。它接近“剪切”-只应插入新行字符。输入为一行,输出为所选字段数的行数+1。输出实际上是一个数组,但powershell以这种方式显示。