Powershell 从两个文件中删除相似的行

Powershell 从两个文件中删除相似的行,powershell,text-files,string-comparison,Powershell,Text Files,String Comparison,我正在尝试寻找PowerShell解决方案,以从文件a中删除与文件B中类似的行。Compare Object$a$B进行比较,但如何删除这些项 归档 yahoo.com google.com stackoverflow.com facebook.com twitter.com 文件B stackoverflow.com facebook.com 比较后:文件A yahoo.com google.com twitter.com 您可以使用以下方法从文件A中删除文件B的内容: $ref = G

我正在尝试寻找PowerShell解决方案,以从文件a中删除与文件B中类似的行。
Compare Object$a$B
进行比较,但如何删除这些项

归档

yahoo.com
google.com
stackoverflow.com
facebook.com
twitter.com
文件B

stackoverflow.com
facebook.com
比较后:文件A

yahoo.com
google.com
twitter.com

您可以使用以下方法从文件A中删除文件B的内容:

$ref = Get-Content 'C:\path\to\fileB.txt'

(Get-Content 'C:\path\to\fileA.txt') |
  ? { $ref -notcontains $_ } |
  Set-Content 'C:\path\to\fileA.txt'

您可以尝试以下一行:

Get-Content 'FileA.txt','FileB.txt' | Group-Object | where-Object {$_.count -eq 1} | Foreach-object {$_.group[0]} | Set-Content 'FileC.txt'
或使用别名:

gc 'FileA.txt','FileB.txt' | Group | where {$_.count -eq 1} | % {$_.group[0]} | Set-Content 'FileC.txt'

首先获得所有行,然后将相同的行分组,选择唯一的行并放入一个文件。

PowerShell和simplicity,手拉手,我看不到这些答案的简单性。您最初的想法是正确的:
Compare-Object
cmdlet是正确的选择


diff$fileA$fileB |?sideindicator-eq“您的解决方案不完整
$fileA
$fileB
必须是各自文件的内容,而且(更重要的是)您需要在过滤器之后展开
InputObject
属性以获得所需的输出。