我正在尝试使用以下命令删除与我提供的详细信息匹配的行。当创建一个新文件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
答案 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