Если SNMPD работает, можно запросить значения загрузки этих машин с простым snmpget. При сценариях этого, можно отсортировать их со значением загрузки и произвести самые низкие четыре...
Попытайтесь делать это соединение использования вместо grep
, это более подойдет:
$ join <(sort file1) <(sort file2)
1111 Roger
3333 Oscar
4444 Roy
6666 Patrick
Если Ваши замены процесса отсутствия оболочки <( )
, можно сделать:
sort file1 > new_file1
sort file2 > new_file2
join new_file1 new_file2
Doc сказал:
соедините записи со стандартным выводом строка для каждой пары входных строк, которые имеют идентичные объединяющие поля.
См. http://www.gnu.org/software/coreutils/manual/html_node/join-invocation.html
Примечания:
Потребность файла, которая будет отсортирована на ключе сортировки для join
для работы правильно вот почему мы используем некоторые дескрипторы файлов в фоновом режиме с помощью замен процесса, См. http://mywiki.wooledge.org/ProcessSubstitution или http://mywiki.wooledge.org/BashFAQ/024 для общего использования.
grep
строки соответствий, где имя пользователя совпадает с идентификатором. join
правильно ограничивает соответствие первым полем, но требует отсортированного входа. В зависимости от входа awk
могла бы быть хорошая альтернатива:
awk 'FNR == NR { ids[$1]++; next } ids[$1]' ids users
Или более читаемый:
awk 'FNR == NR { ids[$1]; next } $1 in ids' ids users
Вывод:
1111 Roger
3333 Oscar
4444 Roy
6666 Patrick
Объяснение
awk программа разделена на две части: тот, который оценен для первого файла и того, который оценен для второго файла.
Первый блок только оценен для первого файла и сохраняет идентификаторы в ids
массив. Когда с этими идентификаторами встречаются при чтении users
блок по умолчанию вызывается ({print $0}
).
checkmark
(будет зеленым), этот путь, люди, ищущие stackexchange веб-сайт, будут известный, что на вопрос хорошо отвечают. Это - то, как stackechange работы веб-сайтов, ;) – Gilles Quenot 14.02.2013, 15:36sort
(в зависимости от локали), рассмотрит дополнительное пространство перед полем, в то время какjoin
проигнорирует его и возможно сообщит о "неотсортированной входной ошибке".join <(sort -k1,1 file1) <(sort -k1,1 file2)
. – Stéphane Chazelas 14.02.2013, 15:59