Решение awk
от @unxnut является более гибким, но в вашем конкретном случае, поскольку ваши требования просты, а формат файла также прост, grep
также может это сделать.
Включение строк, в которых хотя бы одно значение не равно -нулю, равносильно исключению строк, в которых все эти значения равны нулю. Эта команда grep
ищет строки, содержащие два экземпляра:
Любая строка, которая соответствует двум экземплярам этого шаблона (, то есть любая строка, в которой все четыре значения равны нулю ), удаляется . Остальные строки отображаются:
$ egrep -v '(\| *0 *0.*){2}' infile
A B C D E G
SES-N . | 1 0 10 | 0 0 10
CSS-N . | 0 0 10 | 0 5 10
Хотя эта формулировка не очень ясна, я подозреваю, что каталог config.d/*
должен разрешать отдельные файлы конфигурации для определенных клиентов/пользователей или входящих интерфейсов/портов (s ), в отличие от 'system -широкий'. Это будет похоже на использование каталогов sites/*
в apache/httpd и nginx (и, возможно, больше ), чтобы позволить каждому виртуальному хосту или приложению настраиваться отдельно, но при этом все они будут поддерживаться одним сервером. Посмотрите в этих файлах , чтобы увидеть, содержат ли они строки соответствия (, за которыми должны следовать другие реальные строки = не совпадение, комментарий или пробел ), что означает, что они применяются только к определенным соединениям, а не ко всем.
Включить является текстовым. Если у вас есть файл
blich
Include file*
blech
где blich и blech не содержат Match строк, но по крайней мере некоторые файлы (s )содержат (es ), тогда blech фактически становится частью последнего блока Match из объединения файлов --, поэтому настройки в blech используются только для входящих соединений, удовлетворяющих тем условиям соответствия (s ), которые, по-видимому, не соответствовали вашему тестовому соединению.
Если вы хотите, чтобы настройки SSHD были «глобальными», вы должны поместить их перед любой строкой Match (s ), и если включенный файл (s )содержит (s )Сопоставьте строку (с ), что означает, что вы должны поместить глобальные настройки перед Include.
Все (используемые )настройки в файле конфигурации переопределяют значения по умолчанию в программе. Установка одного и того же параметра более одного раза в файле конфигурации (перед/снаружи любых блоков Match )использует первый , а не последний, поэтому ваша идея переопределить более раннее «по умолчанию» (который вообще не является значением по умолчанию, если он находится в файле ), это не сработает. Только когда более позднее вхождение находится в блоке Match, чье условие (s )равно (выполнено ), оно переопределяет первое.
PS :это предположительно произошло сейчас, потому что Fedora истекает -edge и OpenSSH недавно изменил это окончательно после предупреждения (угрожающего? )они будут делать это с версии 8.2 полтора года назад.