获取与字符串匹配的以下字符

时间:2019-04-26 07:53:57

标签: regex shell grep

我正在尝试检索从命令行返回的特定数据。这是我的命令行:

snmpwalk -v2c -c community localhost 1.3.6.1.2.1.2 | grep tun0

哪个给我作为结果:

IF-MIB::ifDescr.4 = STRING: tun0

在这个结果中,我想撤退4。我以为使用正则表达式,但是也许有一种更简单的方法来获取它。

我尝试过的正则表达式:

\ifDescr.\s+\K\S+ https://regex101.com/r/9X04MD/1

[\n\r].*ifDescr.\s*([^\n\r]*) https://regex101.com/r/9X04MD/2

我想通过

这样的单个命令行来获取它

snmpwalk -v2c -c community localhost 1.3.6.1.2.1.2 | grep tun0 | ?

2 个答案:

答案 0 :(得分:1)

有很多选项不涉及使用GNU grep的实验性-P选项。例如,仅提供示例输入即可,这是使用任何sed的一种方法:

$ echo "$out" | sed 's/.*\.\([0-9]\).*tun0/\1/'
4

或任何awk:

$ echo "$out" | awk -F'[. ]' '/tun0/{print $2}'
4

答案 1 :(得分:0)

我建议使用模式(?<=ifDescr\.)[^ =]+

说明:

(?<=ifDescr\.)-向后看,断言wat在前面是ifDescr.

[^ =]+匹配空格或等号=以外的一个或多个字符

Demo