【发布时间】:2021-10-03 22:16:56
【问题描述】:
有没有办法选择一个字符串模式,并得到模式后面的行。
我的元数据看起来像:
"t": "d",
"n": "00001212",
"22.06.2031",
"",
"",
"batman",
我的代码如下:
$contentNameFolder= $content__ | Select-String -Pattern '"n": * '
我的输出看起来像:
"n": "00001212",
我想得到的是:
"n": "00001212",
"22.06.2031",
我试图在我的代码中添加 -context 1,2 或类似的东西,但这对我不起作用。
【问题讨论】:
-
当您仔细(重新)阅读Select-String 的帮助主题时,您可能会注意到
-Context参数,它使您有机会在匹配之前和/或之后包含行。 -
($content__ -join "`n" | Select-String -Pattern '"n":.*\s.*' ).Matches.Value -
你试过了吗:
-Context 0,1?那应该在比赛之前打印 0 行,在比赛之后打印 1 行。 -
假设您的
$content__是一个字符串数组,您使用的模式将只返回一个字符串...包含"n":的字符串。如果要添加更多行,则需要[A]使用-Context参数,[B]使用多个正则表达式模式,或者[C]将谎言作为多行字符串引入并使用正则表达式模式覆盖该字符串的多行。