gpt4 book ai didi

regex - grep 检测 sdaa 但不检测 sda 的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:03 24 4
gpt4 key购买 nike

我想为我的 linux 系统中除/dev/sda 之外的所有设备进行 grep。

我的设备 f.e.

/dev/sda   /dev/sda2  /dev/sdb    /dev/sdc  /dev/sde  /dev/sdg  /dev/sdi  /dev/sdk
/dev/sda1 /dev/sdaa /dev/sdbb /dev/sdd /dev/sdf /dev/sdh /dev/sdj /dev/sdl

目前我正在使用以下命令:

ls /dev/sd* | grep '\/dev\/sd[b-z]'

没有检测到/dev/sdaa。

我想我可以使用这样的正则表达式:http://regexr.com/39u99并用 -v 反转 grep 的结果,但我也无法让它工作。

如果有任何帮助,我将不胜感激:)

编辑:

好的,非常感谢你们所有人 :) 到目前为止,答案非常好。当我还想排除/dev/sda1 和/dev/sda2 等时,我想扩展我的问题

表示除/dev/sda 和/dev/sda1/dev/sda2/dev/sda3 等之外的所有内容

最佳答案

你快到了,下面的正则表达式会帮助你。

\/dev\/sd(a{2}|[b-z]+)


$ grep -Po '\/dev\/sd(a{2}|[b-z]+)' file.txt 
/dev/sdb
/dev/sdc
/dev/sde
/dev/sdg
/dev/sdi
/dev/sdk
/dev/sdaa
/dev/sdbb
/dev/sdd
/dev/sdf
/dev/sdh
/dev/sdj
/dev/sdl

这里是 regex demo

除了正则表达式,您还可以尝试 bash 否定功能来执行此操作。

$ ls  !(sda[0-9])
sdaa sdb sdbb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl

否定对于简单的过滤会更有效。

关于regex - grep 检测 sdaa 但不检测 sda 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27013857/

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