在 sh 中将一个命令的标准输出管道传输到两个命令的标准输入

在 sh 中将一个命令的标准输出管道传输到两个命令的标准输入

tee [使用 >()] 命令不起作用,因为 sh(bourne shell)不支持该命令。

我想要实现的是将“ifconfig -a”的输出发送给两个不同的命令。

这是我的命令(显然不正确):

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

我尝试过此命令的其他变体,包括使用 tee 的可能性,但由于与 sh 不兼容,它似乎不起作用。必须保持最低级别的构造,这就是我尝试使其工作的原因。

我知道在管道上egrep -o ‘255.[0-9]{1,3}.[0-9]{1,3}.[0-9]’我什么也得不到,只能靠管道egrep -o 'ff[[:xdigit:]]{6}'我将得到我需要的输出(我的网络掩码;这是一个很好的网络掩码正则表达式),即:

ff000000
fffff000

我希望它在第一个管道上不给出任何内容而在第二个管道上产生结果,但是两者都接收了“ifconfig -a”的标准输出。

我希望得到一些帮助。我在 FreeBSD (10.1;Amazon EC2) 上使用 /bin/sh

答案1

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

如果您还需要按特定顺序显示结果,请参阅sort

相关内容