gpt4 book ai didi

regex - 使用 awk 匹配一个词,然后找到另一个词的第一次出现

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:39 25 4
gpt4 key购买 nike

我正在尝试找到一种方法,在我已经找到匹配词后重新搜索另一个匹配词。

我特别想获取我的其中一台显示器的亮度值。例如,我的 xrandr --verbose 的部分输出如下:

DP-1 connected 1920x1080+1920+0 (0x6e) normal (normal left inverted right x axis y axis) 598mm x 336mm
Identifier: 0x46
Timestamp: 73906594
Subpixel: horizontal rgb
Gamma: 1.0:1.0:1.0
Brightness: 1.0
Clones:
CRTC: 1

我想查找单词 connected,然后找到单词 Brightness 的第一次出现。

我试过的有效方法如下:

xrandr --verbose | awk '/ connected /{print $1}/Brightness:/{print $2}'

这给了我以下输出,因为我有两个显示器:

LVDS-1                                                                      
1.0
DP-1
1.0

但假设我只想要第一次出现的结果,我试过这个:

 xrandr --verbose | awk '/LVDS-1/{getline; getline; getline; getline; getline; print$0}'

它按预期工作,为我提供了此特定显示器的亮度值。

但是我不确定后面的Brightness值是不是一直在5行。所以我一直在寻找更强大的解决方案。

最佳答案

awk解决方案:

xrandr --verbose | awk '/LVDS-1/{f=1}/Brightness:/ && f{print $2; exit}'

  • /LVDS-1/{f=1} - 在遇到需要 LVDS-1 设置标志的行时 f=1

  • /Brightness:/&& f - 当遇到最近的带有 Brightness: 和事件标志 f 的行时(对于 LVDS-1) - 打印值并立即退出脚本执行(避免冗余迭代)

关于regex - 使用 awk 匹配一个词,然后找到另一个词的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44220931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com