PowerShell - 从字符串

时间:2018-06-04 21:25:03

标签: string powershell

我试图找到一种方法从基于行号的字符串中获取特定行。

例如,我想拉第19行中的任何内容。

根据我的理解,如果我从文件中提取,我可以使用Get-Content-Index执行此操作。使用变量而不是文件时是否有其他选择?

2 个答案:

答案 0 :(得分:0)

取决于您的字符串/变量的构造方式以及数据的分隔符。

也许这些例子激励你......

$var1 = @(
'one'
'two'
'three'
)

$var2 = "four,five,six"

$var3 = @'
seven
eight
nine
'@

# array
$var1[1]

# string with delimeter
$var2.Split(',')[1]

# here string like raw file with CRLF as delim
$var3.Split("`r`n")[1]

答案 1 :(得分:0)

假设一个多行字符串$str作为输入,并$lineNo作为基于1的行号提取:

($str -split '\r?\n')[$lineNo - 1]
  • -split '\r?\n'将输入字符串拆分为数组行。

    • 注意:正则表达式\r?\n旨在匹配Windows样式的CRLF换行符和Unix样式的LF换行符。
      例如,如果要在源代码中定义多行字符串 literal ,则源代码的文件的换行样式将确定字符串&#39 ; S
  • 然后[$lineNo - 1]访问感兴趣的行;鉴于行号是基于1但基于0的数组索引,- 1必须应用于行号。

示例:

$str = @'
line 1
line 2
line 3
line 4
line 5
'@

$lineNo = 3

($str -split '\r?\n')[$lineNo - 1]  # -> 'line 3'