Как эффективно и лаконично отсортировать файл из строк не вмещающихся в память?
А зачем вам вся строка для сортировки? 
Вам она нужна только до того байта, который не совпадет с другими строками.
Взять от каждой строки по 64Kб, отранжировать по отличиям в этой части, продолжить читать только у тех, у которых она совпадает. Повторять чтение кусков до прекращения совпадений.
Если доступен bash

sort -g -S500M -o /path/to/output.txt /path/to/input.txt