Скопируйте таблицу из файла.txt в новый файл.txt, пропустив определенные строки

У меня есть одна таблица (файл.txt) в этой форме:

Table:          HHBB
Displayed Fields:  1 of  5    Fixed Columns:         4     
-----------------------------------------------------------------------------
| |ID   |NAME       |Zähler |Obj       |ID-RON      |MANI   |Felder    |Nim      
|----------------------------------------------------------------------------
| |007  |Kano       |000001 |Lad       |19283712    |       |/HA       |          
| |007  |Bani       |000002 |Bad       |917391823   |       |/LA       |          

Я хочу сохранить эту таблицу в другой файл.txt, но просто хочу пропустить строки, которые соответствуют Table а также Displayed Fields например. Что я пробовал:

If ([string]::IsNullOrWhitespace($tempInputRecord2) -or $_ -match "=|Table:|Displayed|----") {
     continue
}

Как я могу это сделать?

И еще один вопрос: каков наилучший способ записать строки одну за другой в новый текстовый файл?

2 ответа

Есть много способов для простых задач:

  1. Если заголовок для пропуска происходит только один раз:
Get-Content test.txt | Select-Object -Skip 2 | Set-Content test2.txt
  1. Подобный подход к вашему с -notmatch и чередование RegEx
Get-Content test.txt|Where-Object {$_ -notmatch '^ Таблица:|^ Отображаемые поля:'}|Set-Content test2.txt
  1. При принудительном завершении чтения в память путем заключения в скобки вы можете записать в тот же файл:
(Get-Content test.txt) | Select-Object -Skip 2 | Set-Content test.txt

Итак, вы просто хотите удалить строки, которые начинаются с Table: или же Displayed Fields: и выводить результаты в новый файл? использование Where-Object фильтровать строки и Out-File записать их в файл:

Get-Content test.txt |
Where-Object { $_ -notlike "Table:*" -and $_ -notlike "Displayed Fields:*" } |
Out-File test2.txt
Другие вопросы по тегам