Я только что понял это, должно быть, нужно было поспать на нем. Мне не хватает одного из дефисов в исключении. Должно быть, он считывал его как дополнительные параметры, не вызывая никаких синтаксических ошибок, а флаг контрольной суммы -c, вероятно, вызывал его замедление.
Спасибо всем за внимание!
Попробуйте это:
grep -F '.co.uk' file > filtered_file
-F
позволяет grep
искать фиксированную строку вместо шаблона, что делает его намного быстрее, особенно учитывая ваши 25 миллионов строк. Тогда вам также не нужно экранировать точки, которые являются специальными символами для шаблона.
Обратите внимание, что при этом также будут найдены такие строки, как example.co.uk.com
или example.co.uk/index.html
. Если вы хотите, чтобы .co.uk
всегда был в конце, используйте этот ответ .
Учитывая файл типа:
foo.co.uk
bar.co.uk
baz.foo.bar
используйте команду:
grep "\.co\.uk$" file
Выход:
foo.co.uk
bar.co.uk