Выбор отдельных строк в текстовом файле с помощью Power Shell - PullRequest
0 голосов
/ 06 апреля 2020

Я хочу удалить отдельные строки из текстового файла с помощью PowerShell. Вот сценарий:

У меня есть текстовый файл с именем test123 со следующим содержанием:

%A ABC

%B ABC1

%B ABC2

%B ABC3

%B ABC4

%A DEF

Мой сценарий PowerShell должен выполнить поиск % A ABC и удалить строки начиная с %B ABC1 до %B ABC4. Пока я могу написать только следующий код:

get-content C:\Users\<UserName>\Desktop\test123.txt | Select-String -pattern  "ABC" 

и он возвращает

%A ABC

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Вы можете сделать что-то вроде этого -

$keep = $true
Get-Content test123.xer | where {
  if ( $_ -like "*ABC*" ) {
    $keep = $false
  } elseif ( -not $keep -and $_.StartsWith("%A") ) {
    $keep = $true
  }
 $keep
} | Set-Content output.xer
0 голосов
/ 06 апреля 2020

Я подозреваю, что вы упустили некоторые важные вещи [ ухмылка ], но это то, что вы описываете.

что он делает ...

  • фальсифицирует чтение в текстовом файле в виде массива строк
    замените его предпочитаемым источником - pro'ly Get-Content.
  • определяет шаблон для пропуска
  • фильтрует строки текста для тех, которые -notmatch шаблон пропуска
  • отправляет строки "keep this" в коллекцию $Results
  • показывает, что на экране

код ...

#region >>> fake reading in a text file
#    in real life, use Get-Content
$InStuff = @'
%A ABC
%B ABC1
%B ABC2
%B ABC3
%B ABC4
%A DEF
'@ -split [System.Environment]::NewLine
#endregion >>> fake reading in a text file

$SkipThisPattern = 'B ABC'

$Results = $InStuff |
    Where-Object {
        $_ -notmatch $SkipThisPattern
        }

$Results

вывод ...

%A ABC
%A DEF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...