PowerShell: удаление пробелов до и после нескольких строк в тексте - PullRequest
0 голосов
/ 07 февраля 2020

Прямо сейчас я читаю файл из строки в строку и ищу строку в нем.

Если я нашел правильную строку, мне просто нужно 1 слово из строки, чтобы я мог удалить все но эта строка. Теперь у меня есть несколько строк в строке, которые разделены пробелами. Проблема в том, что в начале строки много пробелов, поэтому я не могу разбить предложение или удалить все пробелы, потому что тогда несколько слов объединятся в одно. Вот пример:

Некоторые строки в файле, например:

Network 1:
              protocols ping ssh icmp
              names PC001 PC002 PC003
Network 2:
              protocols ping ssh icmp
...

Код:

Get-Content $file | ForEach-Object{
    $line = $_
    if($line -like "*protocols*"){
        $Protocols = $line.Replace("protocol ", "")
        $Protocols = $Protocol.Replace(" ", "")
    }
}

Я знаю, что это не самое лучшее, но я открыт для улучшений.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2020

Заменить строку:

$Protocols = $Protocol.Replace(" ", "")

На:

$Protocols = $Protocol.trimstart().trimend()
1 голос
/ 07 февраля 2020

Это просто:

$file = 'D:\test\regtest.txt'

$reader = [System.IO.File]::OpenText( $file )
while( ($line = $reader.ReadLine()) -ne $null ) {
    if( $line -like '*protocols*' ) {
        $result = $line -replace '^.*protocols +(.*)', '$1' | ? { $_ } 
        $result
    }
}
[void]$reader.Close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...