2012-12-10 63 views
1

編寫一個小腳本來執行我的服務器上的內務管理任務。如何獲取號碼?

我想抓住剛的ethX的X,

echo `grep -m1 -oE "eth[0-9]*" /etc/network/interfaces | grep -oE [0-9]*` 

這工作,但我想知道,如果有人知道一次性命令,可以做到這一點,即一個普通李毅華,可以採取一個字實例,room456,只能吐出數字。

+4

迴盪在反引號東西是多餘的。只要刪除回聲和反引號。 –

回答

3

使用positive lookbehind匹配由eth之前的任何數字串:

$ cat file 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 

$ grep -Po '(?<=eth)[0-9]+' file 
0 
1 
+0

不是正則表達式的專家,whats?<= – kmassada

+1

這是[正面lookbehind](http://www.regular-expressions.info/lookaround.html)請參閱支持它的重要註釋(如'perl'因此' -P'選項,因爲ER不支持)。 –

1

使用sed

sed 's/^eth\([0-9]\+\):.*$/\1/g' /etc/network/interfaces