Насколько хорошо работает grep / sed / awk на очень больших файлах?

Мне было интересно, были ли grep, sed и awk жизнеспособными инструментами для поиска данных в очень больших файлах.

Допустим, у меня есть 1TB-файл. Если бы мне захотелось обработать текст в этом файле, каков был бы временной интервал, если бы я использовал отдельные команды grep, sed и awk, а также их смешивание.

Очевидно, что конкретный ответ невозможен, поскольку результаты будут варьироваться в зависимости от аппаратных спецификаций, но если бы я мог получить общую оценку, которая была бы полезна.

  • Поиск и замена имени пути в Linux с помощью sed
  • команда bash, которая выводит результат предыдущего канала
  • Удалить столбец из CSV
  • Как удалить строки с пустым первым столбцом?
  • Как обернуть файл с тегами в Bash
  • Извлечение строк между специальными символами
  • Избавиться от десятичного разряда и отменить запятую
  • Удалить до заданного символа, начиная с заданной строки
  • One Solution collect form web for “Насколько хорошо работает grep / sed / awk на очень больших файлах?”

    Обычно я бы сказал, что grep – самый быстрый, sed – самый медленный. Конечно, это зависит от того, что вы делаете в точности. Я нахожу awk намного быстрее, чем sed .

    Вы можете ускорить grep, если вам не нужны реальные регулярные выражения, но только простые фиксированные строки (опция -F).

    Если вы хотите использовать grep, sed, awk вместе в трубах, тогда я поместил бы команду grep, если возможно.

    Например, это:

     grep -F "foo" file | sed -n 's/foo/bar/p' 

    обычно быстрее, чем это:

     sed -n 's/foo/bar/p' file 

    Хотя grep в первой строке кажется ненужным.

    Кстати, вы можете ускорить эти команды, используя LC_ALL=C если вы имеете дело с простыми текстовыми файлами ASCII.

    Обратите внимание, что мой опыт основан на командах gnu. Вы также можете попробовать различные реализации и сравнить скорость.

    Linux и Unix - лучшая ОС в мире.