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