Какой лучший инструмент или метод для поиска определенного слова в кодовой базе?

Какой инструмент или метод вы рекомендуете для поиска и замены значений в вашем коде? Если код находится в Linux / Unix, являются ли методы find и grep лучшим?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
767
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Я предполагаю, что вы собираетесь переименовать переменную.

Это зависит от основной части кода. Для C# инструмент переименования Visual Studio очень хорош. Помните, что для его надежной работы необходимо, чтобы переименование работало рука об руку с компилятором / интерпретатором, поэтому вы можете быть уверены, что вносите изменения только в правильной области.

Если это очень простой поиск / замена, неужели скромный блокнот справится с задачей?

find и grep не создают неопределенностей, поэтому они всегда будут работать медленнее, чем альтернативные варианты. Тем не менее, они отлично работают, если ваша кодовая база состоит всего из нескольких десятков файлов. В Fi

В Eclipse есть хорошая функция поиска файлов (Ctrl + H). Он также может учитывать семантику языка, если у вас есть подходящие плагины (Java, конечно, работает из коробки). Единственное предостережение - это может быть немного медленнее при первом поиске в определенном наборе файлов.

Ответ принят как подходящий

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

Для замены посмотрите флаги Perl -i, -p и -e. Вы можете делать что-то вроде:

$ perl -i -p -e's/\bthisword\b/thatword/g' $(find . -name *.html)

для замены всех экземпляров этого слова этим словом во всех файлах .html в дереве.

Вы также можете использовать ack для части поиска в вашем примере замены: $ perl -i -p -e's / \ bthisword \ b / thatword / g '$ (ack -f --html)

user55400 13.02.2009 17:38

find и grep найдут слово, которое вы ищете, но для его замены вам нужно использовать sed, awk или ваш любимый фильтр редактирования потока.

groovy, python, perl все будут выполнять операции поиска / замены - используйте свой любимый или выберите один, чтобы узнать.

Для операций на базе кода я буду использовать find | sed для простых операций (cygwin - ваш друг) и функцию поиска / замены в среде IDE с поддержкой регулярных выражений для более сложных операций. Eclipse, Idea, Visual Studio и даже SQL Server Manglement Studio имеют мощные функции поиска / замены. Плохая новость в том, что не все они используют один и тот же синтаксис регулярных выражений.

Взгляните на PowerGrep ... у него есть реклама повсюду в SO. Я начинаю хотеть этого, даже когда мне это действительно не нужно -

PD: У них есть 15-дневная бесплатная демоверсия, так что если это небольшая работа, вы можете просто использовать демо.

Это просто подсказка к принятому выше ответу Энди. Не удалось добавить это в качестве комментария из-за меньшей репутации

Использовать ! как разделитель, когда вам трудно избежать струн

например, $ perl -i -p -e's! \ bthisword \ b! thatword! g '$ (найти. -name * .html)

Другие вопросы по теме