用grep在一行中捕获正则表达式

Ant*_* C. 1 regex bash grep

在bash中,sensors我计算机上的输出如下:

Adapter: ISA adapter
Physical id 0:  +67.0°C  (high = +84.0°C, crit = +100.0°C)
Core 0:         +65.0°C  (high = +84.0°C, crit = +100.0°C)
Core 1:         +65.0°C  (high = +84.0°C, crit = +100.0°C)
Core 2:         +65.0°C  (high = +84.0°C, crit = +100.0°C)
Core 3:         +67.0°C  (high = +84.0°C, crit = +100.0°C)
Run Code Online (Sandbox Code Playgroud)

我需要在一行中捕获bash,即物理id 0之后的温度,以及它的单位.

所以在这里,我希望命令完全返回67.0°C.

我试图连锁grep命令,这是我的尝试

sensors | grep -oEi "id[^C]+C" | grep -oEi "[\d.]+°C"
Run Code Online (Sandbox Code Playgroud)

因为使用grep似乎不可能进行分组,所以第一组用于捕获id 0: +67.0°C,第二组用于捕获,第二组用于捕获67.0°C.

但是,没有返回任何内容.然而,第一个grep似乎已经返回了它应该的样子.

那么如何捕获这个字符串?如果它是bash中的一行,任何其他技术都可以.

Cyr*_*rus 5

用awk:

sensors | awk '/^Physical id 0:/ {print $4}'
Run Code Online (Sandbox Code Playgroud)

输出:

+67.0°C

  • 我认为这个解决方案更优雅.或者至少比我的更多.Upvoting. (2认同)