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

259
Avineshwar

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

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

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

 ifconfig -a | egrep -o '255\.[0-9]\.[0-9]\.[0-9]' | egrep -o 'ff[[:xdigit:]]' 

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

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

ff000000 fffff000 

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

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

0

1 ответ на вопрос

1
SΛLVΘ
ifconfig -a | egrep -o '255\.[0-9]\.[0-9]\.[0-9]|ff[[:xdigit:]]' 

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

Довольно мило; к точке. Сортировка пока не проблема, но я постараюсь реализовать это. Avineshwar 8 лет назад 0