通过跳过某些行将表从.txt文件复制到新的.txt文件

时间:2019-01-22 12:26:07

标签: powershell text-files line tabular skip

我有一个这样的表格(.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文件中,但是只想跳过与TableDisplayed Fields匹配的行。我尝试过的:

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

我该怎么做?

另一个问题: 将行逐行写入新文本文件的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

因此,您只想删除以Table:Displayed Fields:开头的行并将结果输出到新文件?使用Where-Object过滤行,然后使用Out-File将其写入文件:

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

答案 1 :(得分:0)

完成简单任务的方法有很多:

  1. 如果要跳过的标头仅出现一次:
Get-Content test.txt|Select-Object -Skip 2|Set-Content test2.txt
  1. 使用-notmatch和RegEx交替的类似方法
Get-Content test.txt|Where-Object {$_ -notmatch '^Table:|^Displayed Fields:'}|Set-Content test2.txt
  1. 当通过用括号括起来强制完全读入内存时,您可以写入同一文件:
(Get-Content test.txt)|Select-Object -Skip 2|Set-Content test.txt