Поиск и автоматизация в OBTF: grep, rg, fzf и скрипты
Большой текстовый файл не мешает работе, если умеете быстро искать. Командная строка даёт точный поиск, контекст вокруг совпадений и возможность автоматизировать рутину. Ниже практические команды для grep, ripgrep и fzf, а также несколько безопасных скриптов.
Базовый поиск
ripgrep обычно быстрее и удобнее grep. Он ищет по файлам, показывает номера строк и умеет работать с регулярными выражениями.
rg -n "TODO" everything.txt
rg -n -C 3 "проект X" everything.txt
rg -ni "идея|мысль" everything.txt
rg -n "2026-10" everything.txt
rg -n "^2026-10-29" everything.txt
-nпоказывает номер строки.-C 3добавляет три строки контекста до и после совпадения.-iигнорирует регистр.^2026-10-29ищет строку, которая начинается с даты.
Если rg не установлен, используйте grep -n. Для поиска по папке добавьте -r.
grep -n "TODO" everything.txt
grep -rn "проект X" ~/notes/
Контекст и фильтры
Поиск по одному слову часто даёт слишком много совпадений. Полезно комбинировать условия и ограничивать область поиска.
rg -n "TODO.*\[работа\]" everything.txt
rg -n -A 5 "TODO" everything.txt
rg -n -B 2 "DONE" everything.txt
rg -n -g "*.txt" "идея" ~/notes/
rg -n --no-heading "проект X" everything.txt
-A показывает строки после совпадения, -B до него, -g задаёт маску файлов. --no-heading убирает заголовки файлов, если вы работаете с одним файлом.
По умолчанию rg уважает .gitignore. Если файл исключён, добавьте -u, чтобы искать без этих правил.
Интерактивный поиск с fzf
fzf превращает список совпадений в интерактивный выбор. Это удобно, когда вы помните примерный текст, но не точную формулировку.
rg -n "TODO|Идея" everything.txt | fzf
rg -n --no-heading "проект" everything.txt | fzf --preview 'echo {}'
Можно открыть выбранную строку в редакторе. Для этого нужен небольшой скрипт, который разберёт номер строки и вызовет редактор. Если такой скрипт кажется лишним, используйте fzf только для выбора, а строку потом находите через rg.
Ежедневные команды
Несколько команд закрывают большую часть рутины.
# Открыть файл в редакторе
$EDITOR everything.txt
# Найти открытые задачи
rg -n "TODO:" everything.txt
# Найти задачи по проекту
rg -n "TODO.*\[работа\]" everything.txt
# Посмотреть записи за конкретный день
rg -n "^2026-10-29" everything.txt
# Посчитать строки и размер
wc -l everything.txt
du -h everything.txt
Команды можно сохранить как псевдонимы. Например, alias todo='rg -n "TODO:" ~/everything.txt' экономит время, если вы проверяете задачи несколько раз в день.
Полезные скрипты
Автоматизация не обязана быть сложной. Начните с копии, резервной копии и простых отчётов.
# Резервная копия с датой
mkdir -p ~/backup
cp everything.txt ~/backup/everything-$(date +%F).txt
# Список проектов по частоте упоминаний
rg -o "\[[^]]+\]" everything.txt | sort | uniq -c | sort -rn
# Количество открытых задач
rg -c "TODO:" everything.txt
# Все выполненные задачи за месяц
rg -n "^2026-10-.*DONE:" everything.txt
Скрипт для резервной копии можно поставить в cron или launchd. Главное, чтобы копия лежала отдельно от основного файла и не перезаписывалась при каждой ошибке.
Безопасность массовых замен
Поиск безопасен, а массовая замена может испортить файл. Перед sed, awk или скриптом на Python сделайте копию и проверьте команду на копии.
cp everything.txt everything.txt.bak
rg -n "старый текст" everything.txt
# Сначала проверьте замену на копии
sed 's/старый текст/новый текст/g' everything.txt.bak > /tmp/check.txt
diff -u everything.txt.bak /tmp/check.txt | head -60
Если файл хранится в Git, закоммитьте его перед заменой. Тогда ошибку можно откатить одной командой. Не храните в файле пароли и ключи, даже если он лежит локально.
Платформы
На macOS установите инструменты через Homebrew: brew install ripgrep fzf. На Debian или Ubuntu: apt install ripgrep fzf. На Windows проще использовать WSL и те же команды. В PowerShell есть Select-String, но синтаксис отличается.
При переносе команд между macOS и Linux проверьте sed. Версия GNU и версия BSD принимают разные флаги для замены на месте.
Когда нужен интерфейс
Командная строка хороша на компьютере, но не заменяет мобильный доступ и совместную работу. Для телефона нужен редактор с доступом к синхронизируемой папке. Для команды нужен инструмент с общим доступом. Об этом есть материалы про синхронизацию и редакторы.
Контрольный список
rgилиgrepустановлен и открывается из терминала.- Поиск по датам, задачам и проектам занимает секунды.
- Для частых запросов есть псевдонимы или короткие команды.
- Резервная копия создаётся отдельно от основного файла.
- Перед массовой заменой есть копия или коммит в Git.
- Команды работают на вашей платформе без правки флагов.
Если задач стало много, посмотрите как вести задачи и проекты в одном файле. Если хотите отвечать на вопросы по архиву, переходите к RAG по личному текстовому файлу.
Начните с готового файла. В шаблоне уже есть дата, маркеры и примеры записей.