sedраствор:
sed -E 's/^(([0-9]+\.){3}[0-9]+).*(C:\\.+) *HAS NOT BEEN PATCHED.*/\1 - \3/' reportfile
Похоже, вы пробуете линуксизм на FreeBSD. Во FreeBSD вы должны использовать классы входа в систему
Отличное общее описание локалей содержится в Какой я должен установить свою локаль и каковы последствия этого? .
Часть этого ответа, которую вы можете игнорировать, называется «Установка локалей». FreeBSD поставляется со всеми установленными стандартными локалями. Вы можете проверить это с помощью
locale -a
Но затем вы , вероятно, утверждаете, что пытаетесь изменить локаль и установить ее. И это то, что я называю линуксизмом. Люди добавляют локаль в linux, не понимая, что на самом деле произошло, а затем устанавливают LC _ALL. Локаль определяет набор LC_*
переменных. Затем LC_ALL
используется для их переопределения!
Во FreeBSD предпочтительным способом изменения настроек локали для пользователя (или системы )является использование 22.2.1.1. Метод классов входа в систему . Здесь вы также можете изменить общесистемные настройки по умолчанию.
LC _ALL следует устанавливать только в том случае, если вы хотите (принудительно )отменить любые другие настройки LC _*. Вы можете подумать, что устанавливаете «локаль» с помощью LC_ALL
, но на самом деле вы просто устанавливаете LANG
на LANG=en_DK.UTF-8
. Это недопустимый язык, и вы должны оставить это на усмотрение проекта Unicode CLDR . Для получения дополнительной информации см. Что делает «LC _ALL=C»?
Тогда я думаю, что вы не хотите изобретать свой собственный новый язык. Но из комбинаций, которые вы выбираете, моя догадка заключается в том, что вы хотели бы, чтобы система вела себя как датская (DK )система, но говорила с вами по-английски. Для этого вы можете смешивать и сопоставлять переменные LC_*
с содержанием заездов.
Пример:
LANG=en_US.UTF-8
LC_CTYPE="da_DK.UTF-8"
LC_COLLATE="da_DK.UTF-8"
LC_TIME="da_DK.UTF-8"
LC_NUMERIC="da_DK.UTF-8"
LC_MONETARY="da_DK.UTF-8"
LC_MESSAGES="en_US.UTF-8"
Если вы не хотите устанавливать свой класс входа (по какой-либо причине ), вам все равно следует придерживаться переменных, определенных CLDR.Это даст вам наиболее переносимые результаты :
.$ LC_ALL=C LANG=en_US.UTF-8 LC_CTYPE=da_DK.UTF-8 LC_COLLATE=da_DK.UTF-8 LC_TIME=da_DK.UTF-8 LC_NUMERIC=da_DK.UTF-8 LC_MONETARY=da_DK.UTF-8 LC_MESSAGES=en_US.UTF-8 mosh xyz.example.org
/usr/local/bin/mosh: could not get canonical name for xyz.example.org: hostname nor servname provided, or not known
ssh_exchange_identification: Connection closed by remote host
/usr/local/bin/mosh: Did not find remote IP address (is SSH ProxyCommand disabled?).
$
Если вы хотите часто использовать эту настройку локали, вы можете настроить ее с помощью класса входа в систему. Либо см. Справочник по FreeBSD, либо мой ответ на SSH для FreeBSD в UTF -8
Я думаю, что ваш ответ лежит где-то выше. Но если мы возьмем ваш вопрос дословно, то Текущая версия FreeBSD добавит локаль UTF -8 C в версии 13.0 (, см. коммит r340144 ). Если вы действительно действительно хотите увидеть, как добавить новую локаль , взгляните на введение C.UTF -8 локаль
Каталог /usr/share/locale/*
— это просто каталог. Если вы сделаете дословную копию, как в Q -, все будет работать на FreeBSD 11.2. Я по-прежнему рекомендую использовать подробные LC_ALL
или классы входа в систему. На данный момент я думаю, что проблема в "толстых пальцах" .
Каталог содержит символические ссылки и файлы определений. Файлы могут быть созданы с помощью localdef , который заменил mklocale в 2015 году .
Если вы не хотите изменять фактический порядок сопоставления, вы можете указать язык, который имеет «правильный» порядок сопоставления -, или просто скопировать файл. PATH_LOCALE=/usr/share/locale
является неявным, так как используется по умолчанию.
Я сделал дословную копию своей системы в test
и en_DK.UTF-8
. Они сразу появляются с locale -a
. Оба работали как положено:
$ locale -a | grep -e en_DK -e test
en_DK.UTF-8
test
$ LC_ALL=test mosh xyz.example.org
/usr/local/bin/mosh: could not get canonical name for xyz.example.org: hostname nor servname provided, or not known
ssh_exchange_identification: Connection closed by remote host
/usr/local/bin/mosh: Did not find remote IP address (is SSH ProxyCommand disabled?).
$ LC_ALL=test /bin/sh
$ locale
LANG=
LC_CTYPE="test"
LC_COLLATE="test"
LC_TIME="test"
LC_NUMERIC="test"
LC_MONETARY="test"
LC_MESSAGES="test"
LC_ALL=test
$ exit
$ LC_ALL=en_DK.UTF-8 mosh xyz.example.org
/usr/local/bin/mosh: could not get canonical name for xyz.example.org: hostname nor servname provided, or not known
ssh_exchange_identification: Connection closed by remote host
/usr/local/bin/mosh: Did not find remote IP address (is SSH ProxyCommand disabled?).
$ LC_ALL=dummy mosh xyz.example.org
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL = "dummy",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL = "dummy",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
/usr/local/bin/mosh: could not get canonical name for xyz.example.org: hostname nor servname provided, or not known
ssh_exchange_identification: Connection closed by remote host
/usr/local/bin/mosh: Did not find remote IP address (is SSH ProxyCommand disabled?).
$ uname -a
FreeBSD test 11.2-RELEASE FreeBSD 11.2-RELEASE #0 r335510: Fri Jun 22 04:32:14 UTC 2018 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64