Поиск и автоматизация в 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

Если 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 принимают разные флаги для замены на месте.

Когда нужен интерфейс

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

Контрольный список

Если задач стало много, посмотрите как вести задачи и проекты в одном файле. Если хотите отвечать на вопросы по архиву, переходите к RAG по личному текстовому файлу.

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

Скачать шаблон .txt →