1

I have two plain text files, each file is containing a list of strings sorted alphabetically with one string per line. I want to diff the files and have an output of all strings that exist only in file2.

Preferabbly I want the operation to be possible without any 3rd party tools, or with a minimum of installations of tools that is "normal" to find in a windows command line environment, such as GNU Diffutils, Powershell, etc. The output should be in text form (file or as command line output).

Example:

File 1 contents:
A
C
D

File 2 contents:
A
B
C
E

Result wanted:
B
E

2 Answers 2

2
comm -13 file_a file_b

(-13 is -1 -3)


diff a b | grep "^>"
diff a b | sed -n "/^>/ s/^> //p"

You can get a very minimal toolset from UnxUtils -- outdated, yes, but enough for this one.

0
4

In Windows PowerShell (direct port of grawity's diff/grep combo):

Compare-Object (Get-Content file1) (Get-Content file2) |
    Where-Object { $_.SideIndicator -eq '=>' } |
    Select-Object -ExpandProperty InputObject

This can be shortened to:

diff (gc file1) (gc file2) | ?{$_.SideIndicator -eq '=>'} | %{$_.InputObject}

or wrapped in a function if you need it more often than once.

1
  • +1 Too bad I can't accept two answers. Works like a charm. Thanks!
    – PHeiberg
    Commented Jun 11, 2010 at 14:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .