从两个文件中删除类似的行

时间:2015-06-30 19:04:43

标签: powershell text-files string-comparison

我试图找到一个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

3 个答案:

答案 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

结果可以通过管道传输(或重定向)到文件中。