Если все, что вы хотите сделать, это сопоставить одну букву C
, то вы сможете сделать это с помощью grep
достаточно легко. Добавьте флаг -i
для нечувствительного к регистру соответствия -.
grep -w C *
LANG
устанавливает локаль по умолчанию, т. е. локаль, используемая, когда не указаны более конкретные настройки (LC_COLLATE
, LC_NUMERIC
, LC_TIME
и т. д. ); он не отменяет никаких настроек, он предоставляет базовое значение. LC_ALL
, с другой стороны, переопределяет все настройки локали.
Таким образом, чтобы переопределить настройки скриптов, вы должны установить LC_ALL
.
Вы можете проверить действие ваших настроек, запустив locale
. Он показывает вычисленные значения в кавычках для всех категорий локали, которые не заданы явно; в вашем примере LANG
не переопределяет LC_NUMERIC
, а предоставляет значение по умолчанию. Если LC_ALL
и LC_NUMERIC
не установлены в среде, языковой стандарт берется из LANG
, а locale
показывает это значение для LC_NUMERIC
, как указано в кавычках.
См. справочную страницу locales
и определения переменных среды POSIX для получения подробной информации. См. также Как работает программа "locale"?
LANG
не отменяет:
$ export LC_NUMERIC="de_DE.UTF-8" $ export LANG=C $ printf "%.2f\n" 3.14 -bash: printf: 3.14: invalid number 3,00
Но LC_ALL
действительно:
$ export LC_NUMERIC="de_DE.UTF-8" $ export LC_ALL=C $ printf "%.2f\n" 3.14 3.14