LINUX.ORG.RU

Подскажите регулярку

 , ,


0

1

Подскажите регулярку для sed.

Есть такая команда для sed:

sed -r "s/^(\S*CFLAGS\s*=.*)(\"|')$/\1 $CFLAGS\2/" -i Makefile
Нужно дописывать в строку с CFLAGS свои $CFLAGS.
Проблема с наличием кавычек после =
С такой регуляркой всё в порядке для строк с кавычками, но строки без кавычек не правятся!
Если добавить ? после (\"|'), то строки без кавычек правятся, но в строки с кавычками мои $CFLAGS подставляются ПОСЛЕ закрывающей кавычки, а не перед.

Какая регулярка нужна чтобы и внутрь кавычек подставляло в конец и в строки без кавычек?

★★★★★
Ответ на: комментарий от yars068

не совсем понял. куда подставлять? проблема в том, что в некоторых тарболах в Makefile не подставляются CFLAGS, CPPFLAGS, LDFLAGS и др. из окружения. приходится править.

teod0r ★★★★★
() автор топика
Ответ на: комментарий от CrX

выяснил, что для нужных мне переменных (CPPFLAGS, ASFLAGS, CFLAGS, CXXFLAGS, LDFLAGS) кавычки вообще не используются. если прописать эти переменные с кавычками — выдаёт ошибку. вопрос закрыт.

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r
sed -r "s/^(\S*CFLAGS\s*=.*[^\"'])([\"']?)$/\1 $CFLAGS\2/" -i Makefile

Правда, не сработает, если правая часть пустая, и ещё в нескольких случаях.

Но если бы закавыченные строки можно было конкатенировать (как в примере), то нужно просто в конец дописать.

anonymous
()