如何抓住这个号码?

时间:2012-12-10 11:21:30

标签: bash shell unix networking

编写一个小脚本来在我的服务器上执行内务处理任务。

我想在ethX中抓住X,

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

这是有效的,但我想知道是否有人知道可以做到的一次性命令,即例如可以采取一个单词的常规训练,房间456并且只吐出数字。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

使用sed

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