TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #301 1.26K
mapfile + grep + process substitution: тройка для работы с потоками

Когда нужно обработать большой поток данных, отфильтровать его и получить доступ к результатам как к массиву - простого grep уже мало. Тут на сцену выходит связка:


mapfile + grep + <(process substitution)


▪️ Цель: передать данные в массив, фильтруя на лету


mapfile -t matched_lines < <(grep "ERROR" /var/log/syslog)


<(…) - создает временный named pipe
grep фильтрует строки по "ERROR"
mapfile -t читает результат построчно в массив matched_lines

▪️ Применение: разбираем большой лог


for line in "${matched_lines[@]}"; do
echo "Найдено: $line"
done


Под капотом нет временных файлов и лишней нагрузки. Всё работает в памяти и построчно, даже с огромными логами.

▪️ Расширение: фильтрация по нескольким условиям


mapfile -t critical < <(grep -E "FATAL|PANIC|OOM" /var/log/app.log)


Или постфильтрация:


mapfile -t filtered < <(some_command | grep -v DEBUG | grep -i error)


▪️ Пример из реального скрипта:


mapfile -t bad_ips < <(awk '{print $1}' access.log | sort | uniq -c | awk '$1 > 100 {print $2}')


В массив bad_ips попадают только IP, сделавшие >100 запросов.

BashTex 📱 #bash #utils
  • 👍 8
More from @bash_tex
  1. Oct 9, 2026BashTex 📱 #мем
  2. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  3. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  4. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  5. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  6. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
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 →