TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #226 1.64K
Сравнение производительности: grep / awk / sed / perl

Когда дело доходит до обработки текста в Linux, у нас есть классическая "великая четвёрка": grep, awk, sed, perl. Все они умеют искать и преобразовывать строки, но что выбрать, если важна производительность?

⭐️ Тест: кто быстрее?

Возьмём файл на 1 млн строк (logs.txt) и задачу - найти строки, содержащие "ERROR" и вывести их.


# 1. grep — специализируется на поиске
time grep 'ERROR' logs.txt

# 2. awk — универсален, но чуть медленнее grep
time awk '/ERROR/' logs.txt

# 3. sed — может искать, но не для этого заточен
time sed -n '/ERROR/p' logs.txt

# 4. perl - мощь и регулярки, но запускается дольше
time perl -ne 'print if /ERROR/' logs.txt


🕛 Результаты (примерные):

Команда Время (сек) Комментарий
grep 0.18 - Самый быстрый в чистом поиске
awk 0.25 - Универсал, чуть медленнее
sed 0.30 - Не лучший для просто поиска
perl 0.35 - 0.50 Мощно, но медленно стартует


🌟 Что важно помнить:

grep - лучший выбор для быстрого поиска. Используй grep -F (fixed strings) для ещё большей скорости.
awk - когда нужна логика: фильтрация, подсчёты, агрегирование.
sed - идеально для простых замен (особенно sed -i), но не лучший инструмент для поиска.
perl - тянет даже сложнейшие регулярки и постобработку, но стоит дороже по времени запуска.


🌟 Хитрости: Для поиска без регулярных выражений:

1. grep -F "ERROR" → быстрее, чем обычный grep.

2. Используй LC_ALL=C или LANG=C для ускорения поиска (отключает локализацию):


LC_ALL=C grep 'ERROR' logs.txt


3. Объединяй:


grep 'ERROR' logs.txt | awk '{print $1}' # вытащить дату, например


BashTex 📱 #linux #utils
  • 👍 20
  • 🔥 3
  • 👨‍💻 1
More from @bash_tex
  1. Oct 13, 2026openat2(): как Linux защищает от выхода за пределы каталога Допустим, приложение должно чи…
  2. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  3. Oct 9, 2026BashTex 📱 #мем
  4. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  5. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  6. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →