PowerShell - выберите конкретную строку из строки - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь найти способ извлечь конкретную строку из строки на основе номера строки.

Например, я хочу получить все, что находится в строке 19.

Изчто я понимаю, я мог бы сделать это с Get-Content и -Index, если бы я вытягивал из файла.Есть ли альтернатива при работе с переменными вместо файлов?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Принятие единственной многострочной строки $str в качестве ввода и $lineNo в качестве номера строки на основе 1 для извлечения:

($str -split '\r?\n')[$lineNo - 1]
  • -split '\r?\n' разбивает входную строку на массив строк.

    • Примечание: Regex \r?\n предназначен для соответствия как новым строкам CRLF в стиле Windows, так и только LF в стиле Unixпереводы строки.
      Если ваша многострочная строка литерал должна быть определена в вашем исходном коде, например, стиль новой строки файла исходного кода определяет строку.
  • Затем [$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'
0 голосов
/ 05 июня 2018

Зависит от того, как построена ваша строка / переменная и от каких разделителей ваши данные.

Может быть, эти примеры вдохновят вас ...

$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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...