读取netstat输出的第一行?

时间:2015-06-27 21:37:06

标签: bash tcp cygwin netstat

我想只阅读netstat的第一行,即解释每列含义的行:

Proto  Local Address     Foreign Address  State

但是,当我执行以下操作时:

netstat | egrep -i "^\s*(tcp|udp)" | { 
  read line
  echo 'Here is the first line ' $line
 }

我只获得第一行连接:

Here is the first line TCP <Local_addr>  <Foreign_addre>  ESTABLISHED

我如何获得这一行?

我在Windows 7机器上运行Cygwin。谢谢。

1 个答案:

答案 0 :(得分:1)

要将任何命令的第一个输出行(例如netstat)读入shell变量line,请使用:

read -r line < <(netstat| head -n1)

此处不需要使用head,但会加快速度。

上述的副作用是在将行分配给line之前删除任何前导或尾随空格。这可能是一个优势。如果要保留空白,请使用IFS= read -r line < <(netstat| head -n1)

构造< <(...)称为进程替换。它需要bash或其他高级shell。请注意,两个<之间的空格是必不可少的。