Передача stdout из команды в stdin двух команд в sh

Команда tee [using >()] не работает, потому что она не поддерживается в sh (оболочка bourne).

То, чего я пытаюсь добиться, это посылать вывод "ifconfig -a" двум различным командам.

Это моя команда (что явно не правильно):

 ifconfig -a | egrep -o '255\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]' | egrep -o 'ff[[:xdigit:]]{6}'

Я пробовал другие варианты этой команды, в том числе возможность использовать тройник, но, похоже, она не работает из-за несовместимости с sh. Необходимо придерживаться самого низкого уровня конструкции, и поэтому я пытаюсь заставить его работать.

Я знаю, что по трубопроводу egrep -o '255.[0-9]{1,3}.[0-9]{1,3}.[0-9]' Я получу только трубку egrep -o 'ff[[:xdigit:]]{6}' Я получу нужный вывод (моя маска сети; это хорошее регулярное выражение для маски сети), а именно:

ff000000
fffff000

Я ожидаю, что он ничего не даст на первом канале и даст результат на втором канале, но для этого у обоих есть стандартный вывод "ifconfig -a".

Я надеюсь получить некоторую помощь. Я использую / bin / sh, во FreeBSD (10.1; Amazon EC2)

1 ответ

Решение
ifconfig -a | egrep -o '255\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]|ff[[:xdigit:]]{6}'

Если вам также нужны результаты в определенном порядке, см. sort

Другие вопросы по тегам