作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想为我的 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/
我正在过滤 lsblk -r 输出以列出非 sda 驱动器。不过,我不会列出 sdab、sdac 等驱动器。 我以前拥有的是: lsblk -r | grep -o '^[a-z]*' | grep
我想为我的 linux 系统中除/dev/sda 之外的所有设备进行 grep。 我的设备 f.e. /dev/sda /dev/sda2 /dev/sdb /dev/sdc /dev/
我是一名优秀的程序员,十分优秀!