В настоящее время я работаю над некоторым устаревшим кодом (проект Java), и многие переменные (15k) имеют подчеркивание в качестве первого символа, например:
_iAmAInt //should be iAmInt
(все заменяемые переменные начинаются с _, за которым следует строчная буква)
Так что я подумал, что попробую почистить это с помощью небольшого скрипта с sed и regex, пока что вот что у меня получилось:
while IFS= read -r -d '' file; do
if [[ $file == *.java ]]; then
sed -i -E 's/([_])([a-z])/\2/g' $file
fi
done < <(find "$1" -type f -print0)
Дело в том, что в некоторых случаях у меня есть несколько строк (например, запросов), которые имеют что-то вроде этого: "select house_id from houses"
Мое текущее регулярное выражение не принимает это во внимание, но, очевидно, мне нужно как-то указать, что _ между "" не должно быть удалено.
Из того, что я прочитал, я мог бы использовать отрицательный прогноз ( Regex: сопоставить все, кроме определенного шаблона )
Но я не совсем уверен, что это полностью решит мою проблему, или даже если весь процесс будет хорошей идеей?
Любые намеки или отзывы о том, как действовать и что делать или нет, приветствуются!
Спасибо
Редактировать: Да, это код Java, и SonarQube помечает это как проблему (хотя это не очень важно)
Редактировать 2: Спасибо за все ответы и комментарии, я многому научился, попробую их и обязательно выберу правильный ответ!