Чтобы выбрать только флаги SSE, попробуйте:
awk '/SSE/' ORS=' ' RS=' '
Ключевым моментом здесь является установка разделителей записей на входе и выходе на пробел. Таким образом, каждый вариант принимается или отклоняется отдельно.
Например:
$ SUNCC_CXXFLAGS="-D__SSE2__ -D__SSE3__ -D__SSSE3__ -D__SSE4_1__ -D__SSE4_2__ -D__AES__ -D__PCLMUL__ ..."
$ newFLAGS="$(echo "$SUNCC_CXXFLAGS" | awk '/SSE/' ORS=' ' RS=' ')"
$ echo "$newFLAGS"
-D__SSE2__ -D__SSE3__ -D__SSSE3__ -D__SSE4_1__ -D__SSE4_2__
SSE
кажется здесь достаточно точным совпадением. Если это не так, мы можем быть более конкретными:
$ newFLAGS="$(echo "$SUNCC_CXXFLAGS" | awk '/^-D__(SSE2|SSE3|SSSE3|SSE4.1|SSE4.2)__/' ORS=' ' RS=' ')"
$ echo "$newFLAGS"
-D__SSE2__ -D__SSE3__ -D__SSSE3__ -D__SSE4_1__ -D__SSE4_2__
$ echo "$SUNCC_CXXFLAGS" | nawk '!/SSE|AES/' ORS=' ' RS=' '
-D__PCLMUL__ ...
SSE
или sse
$ SUNCC_CXXFLAGS="-D__SSE2__ -D__SSE3__ -D__SSSE3__ -D__SSE4_1__ -D__SSE4_2__ -D__AES__ -D__PCLMUL__ -xarch=sse3"
$ newFLAGS="$(echo "$SUNCC_CXXFLAGS" | awk '/SSE|sse/' ORS=' ' RS=' ')"
$ echo "$newFLAGS"
-D__SSE2__ -D__SSE3__ -D__SSSE3__ -D__SSE4_1__ -D__SSE4_2__ -xarch=sse3
. Изменение заключается в том, что мы заменили регулярное выражение / SSE /
с / SSE | sse /
. Поскольку вертикальная черта |
означает логическое «ИЛИ», это соответствует либо SSE
, либо sse
.
У меня была эта проблема в системе с Wi-Fi-картой Atheros, которая не подходила достаточно быстро ни для systemd, ни для udhcpd. Диагностика чрезвычайно утомительна, поскольку задействовано несколько уровней абстракции. Вот что я сделал, чтобы это исправить:
Добавьте export _SYSTEMCTL_SKIP_REDIRECT=1
вверху /etc/init.d/udhcpd
после заголовка LSB. Это отключает один уровень абстракции systemd и позволяет сценарию запуска sysv работать более нормально.
Добавьте sleep 30
в начало секции start)
документа /etc/init.d/udhcpd
. Это дает некоторое время для подключения интерфейса Wi-Fi перед запуском DHCP-сервера. В противном случае он просто тихо выйдет.
Когда он заработает, вы можете уменьшить время сна.
У меня была такая же проблема с Wi-Fi-картой Atheros, связанной с мостом, сервер udhcpd работал на br0. udhcpd, кажется, запускается до появления br0. Мое решение состояло в том, чтобы указать в /etc/default/udhcpd DHCPD _ENABLED значение «нет» и добавить следующую сетевую конфигурацию в /etc/network/interfaces для br0:
post-up /usr/sbin/udhcpd -S /etc/udhcpd.conf