Есть ли относительный регистр для gsed? - PullRequest
3 голосов
/ 13 мая 2019

Индикатор замещения без учета регистра в команде sed сам по себе не учитывает регистр.Добавление i / I к оператору sed, кажется, дает тот же результат.

echo a | gsed ’s_A_Z_i’

возвращает: Z

echo a | gsed ’s_A_Z_I’

также возвращает: Z

echo A | gsed ’s_A_z_I’

возвращает: z

echo A | gsed ’s_a_Z_i’

возвращает: Z

gsed возвращает заменяющий текст для конкретного случая.

Существует ли компактный способ задания нечувствительного к регистру поиска с заменой вслучай совпадения с находкой?(замените a на z и A на Z) * ​​1017 *

Конечно, проблему можно решить двумя командами, но я ищу что-то более компактное.

Во-вторых, есть ли разница вэффект суффикса я / я?(Не флаг -i)

Это следует из, но отличается от [предыдущего вопроса] ( Как использовать GNU sed в Mac OS X )!об использовании gnu-sed в OSX после стандартной установки homebrew.

Я не имею в виду конкретное приложение.Я изучаю некоторые тонкости gnu-sed в OSX и хотел бы узнать, как он справляется с делом.

1 Ответ

6 голосов
/ 13 мая 2019

Параметр i/I команды s изменяет только PATTERN и не изменяет влияет на REPLACEMENT. Пожалуйста, представьте следующее использование:

str='Login'
echo "$str" | sed 's/login/Login/i'

В этом примере предпринимается попытка нормализовать входные данные в upper camel case принять как login, так и Login. Если параметр i/I влияет на REPLACEMENT, мы не можем получить ожидаемый результат.

Если вы хотите отобразить от a до z и от A до Z, попробуйте вместо этого:

sed y/Aa/Zz/
...