Скопируйте таблицу из файла .txt в новый файл .txt, пропустив определенные строки - PullRequest
0 голосов
/ 22 января 2019

У меня есть одна таблица (файл .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 ]

0 голосов
/ 22 января 2019

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

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

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

Get-Content test.txt |
Where-Object { $_ -notlike "Table:*" -and $_ -notlike "Displayed Fields:*" } |
Out-File test2.txt
...