serii81
@serii81
Я люблю phр...

Как с помощью sed в bash конвертировать className из camelCase в dash?

Всем привет.
Нужно изменить класс в реакте
className="myFavoriteClass" => className="my-favorite-class"

Попробвал изменить классы вот таким образом
sed -e "s/className=\"\([A-Z]\)\"/className=\"\L\1\"/g" "src/components/$1"/"$2.jsx"


Вот так работает, но camelCase меняется не только в className
sed -e "s/\([A-Z]\)/-\L\1/g" "src/components/$1"/"$2.jsx"


Почему первый метод не работает?

Заранее благодарен.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
erge
@erge
Примус починяю
например как-то так:
sed -r '
s/(className="[^"]+)([A-Z])([^"]+)([A-Z])([^"]+)([A-Z])([^"]+")/\1-\L\2\3-\L\4\5-\L\6\7/g;
s/(className="[^"]+)([A-Z])([^"]+)([A-Z])([^"]+")/\1-\L\2\3-\L\4\5/g;
s/(className="[^"]+)([A-Z])([^"]+")/\1-\L\2\3/g
' input_file > output_file


или вот так, во всех файлах по маске:
sed -i -r '
s/(className="[^"]+)([A-Z])([^"]+)([A-Z])([^"]+)([A-Z])([^"]+")/\1-\L\2\3-\L\4\5-\L\6\7/g;
s/(className="[^"]+)([A-Z])([^"]+)([A-Z])([^"]+")/\1-\L\2\3-\L\4\5/g;
s/(className="[^"]+)([A-Z])([^"]+")/\1-\L\2\3/g
' *.jsx

см. пример
PS:
ключ -i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы