После долгих колупаний diff со всевозможными комбинациями awk/sed нашлось довольно простое решение с использованием grep
grep -v -f file2 file1 > file3
Если файлы очень большие, то можно сделать так:
sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted
Так же можно использовать comm, которая позволяет работать с большими файлами. Выдержка из man’a:
comm {param} FILE1 FILE2
...
-1 suppress column 1 (lines unique to FILE1)
-2 suppress column 2 (lines unique to FILE2)
-3 suppress column 3 (lines that appear in both files)
...
А для сравнения блочных устройств существует утилита bfcmp