我有一个输出系统中所有磁盘列表的命令,例如:
Real file Device on system Type Size
------------------------------ -------------------- ---------- ----------
/dev/vg/newsystem_canada /dev/vda Device 19.53 GB
/dev/vg/newsystem_canada /dev/vdb Device 1.50 GB
现在,在所有这些行中,我需要提取主磁盘的路径,在这种情况下是“/ dev / vda”,但在其他情况下可能会有所不同。什么是理想的PHP或BASH命令行使用像grep,stripos等的东西来获得正确的主磁盘路径?谢谢!
答案 0 :(得分:0)
你去吧
<强>正则表达式强>
(?<!\n)(?<=\s)(\/[^\s]*)
测试字符串
Real file Device on system Type Size
------------------------------ -------------------- ---------- ----------
/dev/vg/newsystem_canada /dev/vda Device 19.53 GB
/dev/vg/newsystem_canada /dev/vdb Device 1.50 GB
<强>结果强>
/dev/vda
/dev/vdb
<强>演示强>
修改强>
您可能想要获取磁盘的大小以确定它是否是主要的
<强>正则表达式强>
(?<!\n)(?<=\s)(\/[^\s]*).*?([\d\.]++\s\w+)
测试字符串
Real file Device on system Type Size
------------------------------ -------------------- ---------- ----------
/dev/vg/newsystem_canada /dev/vda Device 19.53 GB
/dev/vg/newsystem_canada /dev/vdb Device 1.50 GB
<强>结果强>
/dev/vda
19.53 GB
/dev/vdb
1.50 GB
<强>演示强>
编辑2
如果磁盘以a
结尾,则识别相同的
磁盘名称
(?<!\n)(?<=\s)(\/[^\s]*a)
或
磁盘名称大小
(?<!\n)(?<=\s)(\/[^\s]*a).*?([\d\.]++\s\w+)
答案 1 :(得分:0)
如果输出顺序不同,请使用已知的磁盘大小来匹配
正则表达式:
([\w\/]+)\s+\w+\s+19.53 GB
正则表达式匹配:/dev/vda Device 19.53 GB
匹配1:/dev/vda
请参阅第一场比赛:http://regexr.com/39d8j
答案 2 :(得分:0)
您可以使用以下awk命令,该命令仅打印以字母a
结尾的磁盘路径,
command | awk '/^\/dev/{if($2 ~ /a$/) {print $2};}'
或强>
您可以使用以下grep命令
command | grep -oP '\/\S+\s*\K\/dev\/.*?a(?= )'