2016-06-21 2 views
1

Есть ли способ конвертировать testThatMy в thatMy с помощью терминала?Terminal File заменить testA

Это то, что я сейчас:

sed -i 's/test//g' MyJavaFile.java

Единственное, чего не хватало бы, чтобы преобразовать характер после того, как test теперь прописные.

Также по какой-то причине ссылка на переменную регулярного выражения не работает.

sed -i 's/test([A-Z]{1})/\1/g' MyJavaFile.java

ответ

1

Вы можете использовать следующую GNU SED команду:

sed -r 's/test([[:upper:]])([^[:space:]]*)/\L\1\2/g' file.java 

Для редактирования на месте вам необходимо пройти -i, но я бы проверить команду первой.

шаблон Объяснение:

  • -r позволяет расширить POSIX регулярных выражений.
  • [[:upper:]] соответствует символ верхнего регистра
  • [^[:space:]]* соответствует нулю или более не пробельных символов

Замена Объяснение:

  • \L трансформируют следующее выражение в верхний регистр. \1 - это первая группа захвата контента. \2 - это содержание второй группы захвата.
+0

Спасибо. Хотя мне пришлось изменить его на '' s/test (([[: upper:]]) [^ [: space:]] *)/\ L \ 1/g'' – Niklas

+0

Эту ошибку! Я изменил его на то, что имел в виду. – hek2mgl

Смежные вопросы