Как-то раз два с лишним года назад я решил посмотреть на Go, поизучать, как это - писать на нëм программы, и насколько хороший выходит результат. Идея для первой программы родилась легко - так как мой любимый Python тормозит на запуске, я решил переписать sr, который я постоянно юзал, на Go.
Так родился Go Replace (надо было рассказать про него еще два года назад,
впрочем). Очевидно, поиск по файлам - давно решëнная проблема, find + grep, или
grep сам по себе, или ack, или, вот, the_silver_searcher, но никто из
них не умеет заменять. Замена - это всегда раздражающее переписывание командной
строки на find + sed или xargs + sed. А gr
(короткое название, которое я
выбрал для того, чтоб не сильно много писать) умеет, и в этом весь фокус:
# сейчас мы тут ищем
$ gr what-is-it
# а тут заменяем
$ gr what-is-it -r here-you-go
Всего лишь нажать вверх и дописать то, на что хочется заменить.
Так вот, писать на Go легко, программы работают быстро и прекрасно. При прочих
равных gr
может раза в полтора медленнее grep’а на обычных задачах. Go Replace
при этом умеет пропускать файлы по паттернам из .hgignore
и .gitignore
, а
так же бинарные - поэтому обычно он ищет заметно быстрее. :) Плюс синтаксис
регекспов нормальный, а не POSIX’овый из grep/sed.
Плюс его не нужно компилировать! Качайте и пользуйтесь. Это простой бинарник, у которого нет никаких зависимостей ни на что.