如何从中提取数值。线在壳中

时间:2017-05-19 07:03:43

标签: regex shell

我有像新行一样的行

找到1个调制解调器:

{{1}}

我想在Modem /&之后仅提取数值直到数值结束& space来自shell中的grep命令

3 个答案:

答案 0 :(得分:1)

如果你只需要Modem /之后的数值,你可以使用它:

(?=Modem\/(\d+)\s)

试试here

对于斜杠和空格之间的数字,请使用以下数字:

(?=\/(\d+)\s)

答案 1 :(得分:0)

你也可以使用它,

(?=Modem\/([0-9]+)\s)

regex101

上试用

答案 2 :(得分:0)

您可以将grepo一起使用(以提取匹配的文本)和P(以启用使用具有外观的PCRE模式)选项:

echo "/Org/freedesktop/ModeManager1/Modem/12 [Generic] MBIM [8087:0911]" | \
      grep -oP "(?<=/Modem/)[0-9]+"

请参阅online demo

模式匹配

  • (?<=/Modem/) - 字符串中以/Modem/开头的位置(因为(?<=...)是一个正面的后视,只检查模式是否与文本匹配而不将该文本放入返回的文本中匹配值)
  • [0-9]+ - 一位或多位数。