在 Powershell 中获取特定行 variable/array
Getting specific rows in a Powershell variable/array
我希望我能够尽可能简单地提出我的问题。我对使用 PowerShell 还很陌生。
现在回答我的问题:
我使用 Invoke-Sqlcmd
到 运行 一个查询,它将数据放在一个变量中,比方说 $Data
.
在这种情况下,我在 SQL 数据库中查询触发器。
然后我将数组拆分以获得更具体的信息:
$Data2 = $Data | Where {$_.table -like 'dbo.sportswear'}
$Data3 = $Data2 | Where {$_.event -match "Delete"}
所以最后我有一个带有这些索引的变量(?),我不确定它们是否被称为索引。
table
trigger_name
activation
event
type
status
definition
现在我只想检查 definition
中的内容。
所以我创建了一个 $Data4 = $Data3.definition
,到目前为止一切顺利。
但现在我有一个大文本,我只想要 2-3 个特定行的内容。
当我使用 $Data4[1]
或 $Data4[1..100]
时,我意识到 PowerShell 将每个字符视为 line/row.
但是当我刚写 $Data4
时,它向我展示了带有段落、换行等格式的内容。
有谁知道如何获取变量的特定行或行?
谢谢大家:)
看来 $Data4
是一个格式化的字符串。由于它是单个字符串,因此任何索引元素查找 return 个单个字符(System.Char
类型)。如果您希望索引到 return 个更长的子字符串,您需要以某种方式将您的字符串拆分为多个字符串,或者想出一个更复杂的搜索机制。
如果我们假设您之后的行是由换行符 and/or 回车符 return 分隔的实际行,您可以只拆分这些换行符并使用索引来访问您的行:
# Array indexing starts at 0 for line 1. So [1] is line 2.
# Outputs lines 2,3,4
($Data4 -split '\r?\n')[1..3]
# Outputs lines 2,7,20
($Data4 -split '\r?\n')[1,6,19]
-split
使用正则表达式匹配字符并对所有匹配项执行字符串拆分。它会产生一个子字符串数组。 \r
匹配回车 return。 \n
匹配换行符。 ?
匹配 0 个或一个字符,如果换行符前没有回车 return,则需要这样做。
我希望我能够尽可能简单地提出我的问题。我对使用 PowerShell 还很陌生。
现在回答我的问题:
我使用 Invoke-Sqlcmd
到 运行 一个查询,它将数据放在一个变量中,比方说 $Data
.
在这种情况下,我在 SQL 数据库中查询触发器。
然后我将数组拆分以获得更具体的信息:
$Data2 = $Data | Where {$_.table -like 'dbo.sportswear'}
$Data3 = $Data2 | Where {$_.event -match "Delete"}
所以最后我有一个带有这些索引的变量(?),我不确定它们是否被称为索引。
table
trigger_name
activation
event
type
status
definition
现在我只想检查 definition
中的内容。
所以我创建了一个 $Data4 = $Data3.definition
,到目前为止一切顺利。
但现在我有一个大文本,我只想要 2-3 个特定行的内容。
当我使用 $Data4[1]
或 $Data4[1..100]
时,我意识到 PowerShell 将每个字符视为 line/row.
但是当我刚写 $Data4
时,它向我展示了带有段落、换行等格式的内容。
有谁知道如何获取变量的特定行或行?
谢谢大家:)
看来 $Data4
是一个格式化的字符串。由于它是单个字符串,因此任何索引元素查找 return 个单个字符(System.Char
类型)。如果您希望索引到 return 个更长的子字符串,您需要以某种方式将您的字符串拆分为多个字符串,或者想出一个更复杂的搜索机制。
如果我们假设您之后的行是由换行符 and/or 回车符 return 分隔的实际行,您可以只拆分这些换行符并使用索引来访问您的行:
# Array indexing starts at 0 for line 1. So [1] is line 2.
# Outputs lines 2,3,4
($Data4 -split '\r?\n')[1..3]
# Outputs lines 2,7,20
($Data4 -split '\r?\n')[1,6,19]
-split
使用正则表达式匹配字符并对所有匹配项执行字符串拆分。它会产生一个子字符串数组。 \r
匹配回车 return。 \n
匹配换行符。 ?
匹配 0 个或一个字符,如果换行符前没有回车 return,则需要这样做。