如何截取php -v命令输出,剔除指定符号后内容仅保留核心版本号
解决方案
你之前的命令仅做了行匹配过滤,没有对匹配到的行内容做截取,所以会返回完整的行内容,可以用以下两种方法实现需求:
方法1:使用grep的仅匹配输出功能
如果只需要保留到三位版本号(即PHP 7.3.27格式),执行命令:
php -v | grep -oE '^PHP [0-9]+\.[0-9]+\.[0-9]+'
如果需要连带保留-加数字的后缀(即你示例中的PHP 7.3.27-9格式),调整正则即可:
php -v | grep -oE '^PHP [0-9]+\.[0-9]+\.[0-9]+(-[0-9]+)?'
命令说明:
-o参数指定grep仅输出匹配到的内容,而非整行-E启用扩展正则表达式,简化正则写法- 正则规则精准匹配行开头的
PHP加版本号片段,自动截断后续-、+开头的冗余内容
方法2:使用sed做内容替换
也可以用sed实现同样效果,命令如下:
php -v | sed -n 's/^\(PHP [0-9.]*\)[-+ ].*/\1/p'
命令说明:
-n关闭sed默认的全量输出- 替换规则捕获行开头的版本号部分,将后续冗余内容全部清空后输出匹配行
内容的提问来源于stack exchange,提问作者shiva
相关产品推荐
相关产品推荐

