我正在运行dmesg,其中包含有关连接到计算机的设备和驱动器的信息。 IDE驱动器显示为" hd"接着是一封以" a"开头的信。我需要使用grep命令来查找包含hd或sd后跟字母的内容。
我知道这有点像这样:
dmesg | grep ...但是我在编写正则表达式方面遇到了麻烦。我怎么做?
答案 0 :(得分:2)
尝试grep '[hs]d[a-z]'
所以,dmesg | grep '[hs]d[a-z]'
编辑
如下所述,您可以执行LC_ALL=C ; dmesg | grep '[hs]d[a-z]'
以确保您的语言环境不会使用[a-z]
。
结束编辑
如果您只想匹配以此为开头的内容,请使用'^[hs]...'
^
匹配行的开头,因此匹配:
hda1是
并且它不匹配
我在这里找到了hda1 ......
答案 1 :(得分:0)
@mikeb的答案很好,他的角色等级|
中只有一个虚假的[h|s]
字符,这是一个错误。
如果你想确保字符串只包含hda,hdb,hdc,sda,sdb,sdc等,之后没有其他字母,你可以使用" \ b"匹配单词边界。
dmesg | grep '\b[hs]d[a-z]\b'
如果您想了解分区,请删除末尾的\b
并将其替换为\d
(对于数字):
dmesg | grep '\b[hs]d[a-z]\d'
或者只是将其保留,然后它将匹配驱动器和分区:
dmesg | grep '\b[hs]d[a-z]'