gpt4 book ai didi

regex - 如何使用前瞻排除正则表达式中的特殊字符

转载 作者:行者123 更新时间:2023-12-03 14:12:59 24 4
gpt4 key购买 nike

我有一个正则表达式,我用它来尝试检测屏幕分辨率,如下所示

xrandr | grep -P '(.*\d+x\d+)* | awk {'print$3'}
当我在脚本中使用时,它会给我这样的东西
输出
1920x1200+0+0
1920x1200+1920+0
primary
1920x1200+1920+1200
我尝试使用前瞻,但我猜我没有正确使用它,因为我得到了相同的匹配。
代码
xrandr | grep -P '(.*\d+x\d+)*^(?![\+]+\d\+\d) | awk {'print$3'}
有人可以解释一下前瞻如何处理特殊字符,以便我可以解决这个问题吗?我只想以下面的形式或一些变体返回屏幕分辨率。我想要做的是区分双显示器和 4 显示器。
xrandr | grep -P '(.*\d+x\d+)*^(?![\+]+\d\+\d) | awk {'print$3'} | tr -d '\\n'
期待
1920x12001920x1200primary1920x1200
或这个
1920x1200
1920x1200
primary
1920x1200
如果它可以仅返回屏幕分辨率,则奖励积分。
1920x1200
1920x1200
1920x1200
1920x1200
xrandr 输出
Mon0 connected 1920x1200+0+0 0mm x 0 mm
1920x1200_c 59.95*
Mon0 connected 1920x1200+0+0 0mm x 0 mm
1920x1200_c 59.95*
Mon0 connected primary 1920x1200+0+1200 0mm x 0 mm
1920x1200_c 59.95*
Mon0 connected 1029x1200+1920+1200 0mm x 0 mm
1920x1200_c 59.95*

最佳答案

您可以跳过 grep并在单个 awk 中完成此操作:

xrandr | awk 'NF >= 3 && /[0-9]+x[0-9]+/ {sub(/[+-].*/, "", $3); print $3}'

1920x1200
1920x1200
primary
1029x1200
另类单 gnu grep解决方案:
xrandr | grep -oP 'connected\h+\K(\d+x\d+|\S+)'

关于regex - 如何使用前瞻排除正则表达式中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66030324/

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