При запуске следующей команды sed в Windows (заглавная буква ключевого слова не является частью другого слова):
"c:\Program Files (x86)\GnuWin32\bin\sed.exe" -e "s/[^a-z]*declare[^a-z]*/DECLARE/I" "SqlFile.sql"
превратится declare @returntable из SqlFile.Sql в DECLAREreturntable .
Но добавление групп захвата для переноса окружающих символов в строку назначения приведет к declare нижнем регистре:
"c:\Program Files (x86)\GnuWin32\bin\sed.exe" -e "s/([^a-z]*)declare([^a-z]*)/\\1DECLARE\\2/I" "SqlFile.sql"
Почему sed применяет различные правила к сгруппированным наборам по сравнению с несгруппированными?
(Я знаю, что границы слов \b - лучший способ прописывать ключевые слова, но я наблюдал такое поведение sed и задавался вопросом, в чем причина)
