Windows 删除Powershell中文件2中存在的文件1中的行
我有一个file1.txt,其中包含: 第1行Windows 删除Powershell中文件2中存在的文件1中的行,windows,file,powershell,Windows,File,Powershell,我有一个file1.txt,其中包含: 第1行 第2行 第3行 第4行 我想从file1.txt中删除另一个file2.txt中存在的所有行: 第3行 第2行 结果应该是: 第1行 第4行 我尝试使用此命令,但它仅在file2.txt中有一行时有效: Get-Content C:\file1.txt | Where-Object {$_ -notmatch $(get-content C:\file2.txt)} 注意:我不想比较两个文件,看它们是否相同 有什么想法吗?我对powershel
第2行
第3行
第4行 我想从file1.txt中删除另一个file2.txt中存在的所有行: 第3行
第2行 结果应该是: 第1行
第4行 我尝试使用此命令,但它仅在file2.txt中有一行时有效:
Get-Content C:\file1.txt | Where-Object {$_ -notmatch $(get-content C:\file2.txt)}
注意:我不想比较两个文件,看它们是否相同
有什么想法吗?我对powershell非常陌生。比较对象有助于获得两个文件之间的差异。下面是一些示例代码,用于完成您的要求
$file1 = Get-Content C:\temp\file1.txt
$file2 = Get-Content C:\temp\file2.txt
$Diff = Compare-Object $File1 $File2
$LeftSide = ($Diff | Where-Object $_.SideIndicator -eq '<=').InputObject
$LeftSide | Set-Content C:\temp\file3.txt
$file1=获取内容C:\temp\file1.txt
$file2=获取内容C:\temp\file2.txt
$Diff=比较对象$File1$File2
$LeftSide=($Diff | Where Object$u.SideIndicator-eq'下一个代码段显示了实现相同结果的两种不同方法:
$filebefore="$env:TEMP\beforerestart.txt" # change to match your circumstances
$file_after="$env:TEMP\after_restart.txt" # ditto
### Compare-Object way
$array = Compare-Object $(Get-Content $filebefore) $(Get-Content $file_after)
$array | where {$_.SideIndicator -eq "<="} |
Format-Table -Property InputObject -AutoSize -HideTableHeaders
### -NotIn operator way
$(Get-Content $filebefore) |
Where-Object {$_ -notIn $(Get-Content $file_after)}
$filebefore=“$env:TEMP\beforestreat.txt”#根据您的情况进行更改
$file_after=“$env:TEMP\after_restart.txt”#同上
###比较对象方式
$array=Compare Object$(获取内容$filebefore)$(获取内容$file\u after)
$array |其中{$\ SideIndicator-eq“使用-in
而不是-match
,在这里的答案中解释了几乎相同的事情:顺便说一句,要更快地学习PS,请使用PowerShell ISE,在那里您可以调试代码并按F1键查看内置帮助(注意,它不像在线文章那样完整,有时会在控制台中显示匹配主题的列表,在这种情况下,请选择一个,然后再次按F1)。对于我的情况,-NotIn way就是这样!谢谢!但当行包含重音字符时它不起作用…有什么提示吗?@Pozinux请阅读,为-Encoding
参数使用适当的值。找到了解决方案!非常感谢您的快速回答。我收到以下错误:Where Object:无法将参数绑定到参数'FilterScr'因为它是空的。
有什么想法吗?