При запуске следующей команды 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
и задавался вопросом, в чем причина)