QUESTION :
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
ANSWER :
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.
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.