<div dir="ltr"><div><div><div>Привет всем,<br><br></div>Хочу предложить воркшоп по обработке текста в Bash с помощью Unix-утилит.<br><br><br></div>== Зачем это нужно ==<br></div><br>В Unix, да и не только, много информации представлено в виде текста. Это всевозможные листинги, отчёты, исходные коды, конфиги, логи, вывод command-line утилит и так далее. Часто возникает задача извлечь из большого количества текста что-то полезное, или отфильтровать что-то ненужное, или преобразовать в более удобоваримую форму, или отсортировать, или посчитать какую либо статистику по данным. Или переименовать файлы, сгенерив для них имена. Некоторые люди пишут большие программы на С для этого и потом мучительно их отлаживают, или забивают и делают работу вручную, тратя неимоверную кучу времени. Другие люди пишут программы попроще на Ruby/Python/Perl. Очень часто такой подход - overkill. Да и не все мы программисты. Написать однострочник в shell - легче и гораздо быстрее. Как это делать, комбинируя стандартные (и не очень) утилиты командной строки - научит данный воркшоп.<br><div><div><br><div><div><div><div><div>== Целевая аудитория ==<br></div><div><br>Этот воркшоп будет полезен для новичков и людей поопытнее, хотящих упорядочить свои
 разрозненные знания по обработке текста с помощью Unix-утилит. По моему
 опыту, для многих людей grep - самая сложная утилита, что они 
используют. Так изменим же это!<br><br></div><div>Обработка текста -<br>Полезна новичку,<br></div><div>И крутому профи,<br></div><div>И даже старичку.<br></div><div><br></div><div>== Что в программе ==<br></div><div><br></div><div>* Напоминание, что такое piping, оно же перенаправление ввода-вывода в shell.<br></div><div>* Специальные источники ввода и приёмники вывода.<br></div><div>* Рассмотрение стандартных (и не очень) утилит: echo, cat, cut, tac, seq, head, tail, touch, tr, xxd, sort, uniq, grep/egrep/pgrep, wc, tee, find, 
xargs, sed, awk, rpl, rename, etc.<br>* Вскользь упоминаются perl и ruby.<br></div><div>* Комбинирование утилит, построение длинных однострочников шаг за шагом и их отладка.<br></div><div>* Генерация одних скриптов другими и их запуск, с предпросмотром результата генерации и без.<br></div><div>* "for" vs "xargs".<br></div><div><div>* Некоторые отличия GNU- и BSD- наборов утилит.<br></div>* Полезные и вредные пробелы. Как использовать первые и бороться со вторыми.<br></div><div>* Регулярные выражения.<br>* "Полный" курс Awk на 13 слайдах. Офигейте от того как прост и мощен Awk, как офигел когда-то я.<br></div><div>* Флеймообразующее: Почему Sed - отстой, и его область применения следует ограничить, хоть и не отказаться от него полностью.<br></div><div></div><div>* Философское: Структурированный текст - это база данных, с записями и полями.<br></div>* Границы применимости "маленьких" утилит и когда таки стоит использовать Ruby/Python/Perl.<br><div><br><br></div><div>Будет ли народу интересен такой воркшоп?<br><br><br></div><div>/Алексей.<br><br></div></div></div></div></div></div></div></div>