Text Processing: Grep - compare two files
From WikiMLT
Source of the article: Ask Ubuntu: Comparing contents of two files.
Get only the lines that exist in file1 but not in file2:
grep -Fxvf file2 file1 > diff_file
Where:
-F,--fixed-strings– PATTERNS are strings,-x,--line-regexp– match only whole lines,-v,--invert-match– select non-matching lines,-f,--file=FILE– take PATTERNS from FILE.
An inline script for two ways comparison:
FILE1="file1"; FILE2="file2"; \
cat <(echo -e "\nOnly in $FILE1") \
<(grep -Fvxf "$FILE2" "$FILE1") \
<(echo -e "\nOnly in $FILE2") \
<(grep -Fvxf "$FILE1" "$FILE2")
From the comments:
- The problem with this solution is that it'll go super slow if you've got long files (it's O(N^2) on the length of the longer file). Sorting first and using something like
difforcommwill be O(N log N).