Powershell 从两个文件中删除相似的行
我正在尝试寻找PowerShell解决方案,以从文件a中删除与文件B中类似的行。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
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
属性以获得所需的输出。