我试图找到一种方法从基于行号的字符串中获取特定行。
例如,我想拉第19行中的任何内容。
根据我的理解,如果我从文件中提取,我可以使用Get-Content
和-Index
执行此操作。使用变量而不是文件时是否有其他选择?
答案 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换行符。然后[$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'