Как переключить конкретное выражение в файл в нижнем регистре (команда linux)

0

Я пытаюсь найти команду или создать скрипт на linux, позволяющий переключать конкретное выражение на нижний регистр во многих файлах в подкаталогах.

Мне нужно это, чтобы изменить регистр во всех операторах include в проекте C++ (проект Porting Visual studio для linux)

Поэтому во многих файлах у меня есть

#include <Path1/pAth2/naMeofTheHeader.h>

и я хотел бы изменить его на

#include <Path1/pAth2/nameoftheheader.h>

(Конечно, я не хочу, чтобы путь был перемещен в нижнем регистре)

Кто-нибудь есть идея выполнить это? Я пробовал команду somme sed (с\L), но все сработало.

благодаря

Теги:
sed

1 ответ

3
Лучший ответ

Вы можете попробовать команду ниже sed,

sed 's~\(#include .*\/\)\([^\/.]*\)~\1\L\2~g' file

Пример:

$ echo '#include <Path1/pAth2/naMeofTheHeader.h>' | sed 's~\(#include .*\/\)\([^\/.]*\)~\1\L\2~g'
#include <Path1/pAth2/nameoftheheader.h>
  • 0
    Это чуть менее склоняется к зубочистке: у sed '/^#include <.*>/ s#[^/]\+$#\L&#'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню