Как сопоставить каждую строку содержимого текстового файла в сценарии powershell - PullRequest
0 голосов
/ 05 июня 2018

У меня есть текстовый файл 'abc.txt', который содержит следующее.
hello_1
hello_2
..
..
hello_n

Мне нужно написатьскрипт для открытия файла abc.txt, чтения каждой строки и сохранения каждой строки в переменной с именем $ temp.Мне нужно прочитать только строку, которая начинается с «привет».Что не так с кодом ниже?
У меня есть код ниже:

foreach ($line in Get-Content "c:\folder\abc.txt")    
{    
    if($line Select-String -Pattern 'hello')
    $temp=$line
}

Ответы [ 2 ]

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

Попробуйте это -

$temp = @()
(Get-Content "c:\folder\abc.txt") | % {$temp += $_ | Select-String -Pattern "hello"}
$temp

Код получает содержимое abc.txt, и для каждого объекта проверяется, соответствует ли шаблон hello.Если это совпадение, то оно сохраняет соответствующее значение в массиве, определенном как $temp.

ИЛИ

Вы можете перефразировать ваш исходный код следующим образом -

$temp = @()
foreach ($line in Get-Content "c:\folder\abc.txt")    
{    
    if($line | Select-String -Pattern 'hello') {
    $temp += line
    }
}

В исходном коде вы пропускаете конвейер в выражении if($line Select-String -Pattern 'hello').И вам не хватает фигурных скобок {} для включения оператора if.

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

Вы пропустили конвейер после $line, а фигурные скобки отсутствуют во всем блоке скриптов { и } после foreach, должно быть:

foreach ($line in Get-Content "c:\folder\abc.txt")    
{    
    {
    if($line | Select-String -Pattern 'hello')
    $temp=$line
    }
}

Кроме того, я неНе знаю, какова ваша цель, но если вы хотите, чтобы $line не перезаписывался каждый раз, вы должны создавать массив вне итерации и заполнять его каждый раз:

, поэтому сначала: $line = @() и вместоиз $temp=$line изменить на $temp += $line

Но опять же, если ваша цель - отфильтровать строку hello из текстового файла, этого должно быть достаточно:

$temp = (Get-Content "c:\folder\abc.txt") -match '^hello'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...