从文件中删除新行

时间:2019-04-27 11:06:50

标签: powershell powershell-v4.0

我正在尝试使用以下命令删除与我提供的详细信息匹配的行。当创建一个新文件output.txt时,它附带了一个我不想出现的新行。是否可以用下面粘贴的同一命令将其删除。

a.txt具有以下内容:

12345   asd 12-22-2009
23432   vfv 03-21-2019
23432   abcd    03-21-2019
38372   kcdsklfm    08-17-2011
Get-Content C:\test\a.txt |
    Select-String -Pattern '23432' -NotMatch |
    Out-File C:\test\output.txt

output.txt(预期):

12345   asd 12-22-2009
38372   kcdsklfm    08-17-2011

output.txt(实际):


12345   asd 12-22-2009
38372   kcdsklfm    08-17-2011

output file screenshot

2 个答案:

答案 0 :(得分:0)

Select-String不产生字符串输出(例如,参见here)。之所以会出现空白行,是因为“ Select-String”中的MatchInfo个对象在写入输出文件时会被整形为字符串。

为避免此行为,请在将输出写入文件之前,展开Line对象的MatchInfo属性:

Get-Content C:\test\a.txt |
    Select-String -Pattern '23432' -NotMatch |
    Select-Object -Expand Line |
    Out-File C:\test\output.txt

答案 1 :(得分:0)

您还可以选择不使用Select-String并执行以下操作:

Get-Content C:\test\a.txt | Where-Object {$_ -notmatch '23432'} | Out-File C:\test\output.txt -Force
相关问题