我希望我能够尽可能简单地提出我的问题。我对使用PowerShell非常陌生。
现在我的问题是:
我使用Invoke-Sqlcmd运行查询,该查询将Data放入变量中,比如$Data
在这种情况下,我在SQL数据库中查询触发器。
然后,我对数组进行拆分以获取更多具体信息:

$Data2 = $Data | Where {$_.table -like 'dbo.sportswear'}
$Data3 = $Data2 | Where {$_.event -match "Delete"}
所以最后我有了一个带有这些Indexes(?)的变量,我不确定它们是否称为索引。
table
trigger_name
activation
event
type
status
definition
现在,我要做的就是检查definition中的内容。
因此,我创建了一个$Data4 = $Data3.definition,到目前为止一切顺利。
但是现在我有一个大文本,我只需要2-3个特定行的内容。
当我像$Data4[1]$Data4[1..100]一样使用时,我意识到PowerShell将每个字符视为一行/行。
但是,当我只写$Data4时,它向我展示了用段落,换行符等格式格式化的内容。
有谁知道如何获取变量的特定行或行?
谢谢你们 :)

最佳答案

看来$Data4是格式化的字符串。由于它是单个字符串,因此所有索引元素查找都返回单个字符(System.Char类型)。如果希望索引返回更长的子字符串,则需要以某种方式将字符串拆分为多个字符串,或者提供更复杂的搜索机制。
如果我们假设您后面的行是由换行符和/或回车符分隔的实际行,则可以拆分这些换行符并使用索引来访问行:

# 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与回车符匹配。 \n与换行符匹配。 ?匹配0或一个字符,如果在换行符之前没有回车符,则需要此字符。

关于sql - 在Powershell变量/数组中获取特定行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62641398/

10-11 05:37