我试图找到一个PowerShell解决方案来删除文件A中与文件B类似的行。Compare-Object $A $B
进行比较,但如何删除项目?
档案A
yahoo.com
google.com
stackoverflow.com
facebook.com
twitter.com
档案B
stackoverflow.com
facebook.com
比较后:文件A
yahoo.com
google.com
twitter.com
答案 0 :(得分:2)
您可以使用以下内容从文件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'
答案 1 :(得分:0)
你可以尝试这一行:
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'
首先获得所有行,然后将相同的行分组,选择唯一的行并放入文件中。
答案 2 :(得分:0)
PowerShell和简单,携手并进,我不会在这些答案中看到简洁。您最初的想法是正确的:Compare-Object
cmdlet是要走的路。
diff $fileA $fileB | ? sideindicator -eq '<=' # v4
结果可以通过管道传输(或重定向)到文件中。