1

Go Replace!#

 3 years ago
source link: https://solovyov.net/blog/2013/goreplace/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Go Replace!#

Как-то раз два с лишним года назад я решил посмотреть на 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.

Плюс его не нужно компилировать! Качайте и пользуйтесь. Это простой бинарник, у которого нет никаких зависимостей ни на что.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK