2015-06-27 87 views
-1

我想只讀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。謝謝。

+0

我個人不會使用'read'來達到這個目的 - 我會找到一種方法來提取這一行並將其直接賦值給一個變量。例如:'line =「$(netstat -n | sed -n 2p)」' – iscfrc

回答

1

要讀取的任何命令的第一輸出線,如netstat,入殼可變line,使用:

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

使用head是沒有必要在這裏,但它加快東西。

以上的副作用是在將行分配給line之前,刪除任何前導或尾隨空白。這可能是一個優勢。如果您想保留空格,請使用IFS= read -r line < <(netstat| head -n1)

構造< <(...)被稱爲過程替換。它需要bash或其他高級外殼。請注意,兩個<之間的空間是必不可少的。

+0

謝謝,這是一個很好的解釋。但是,當我運行這個時,沒有任何東西放入「行」中。它什麼都不打印。 – Sother

+0

@其他'netstat | head -n1'本身運行產生任何輸出? – John1024

+0

'netstat |頭-nX',其中X是任何正整數,正確打印出適當的行。但是,當我在bash腳本中運行時,我無法通過'echo'來檢索它。 – Sother