You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用grep或sed在Bash中调整apachectl -v的输出格式

修改Apache版本输出格式

问题背景

现有Bash脚本如下:

#!/bin/bash

strversion=`apache2ctl -v | awk '{print $3}' | sed  's/(Debian)//g;s/Server//g;s/built//g;s/2022-06-09T04:26:43//g'`

echo ${strversion%}
exit 0

当前输出为:

Apache/2.4.54

需要将输出修改为:

Apache version 2.4.54

解决方案

方法1:简化命令链,直接用sed完成匹配替换

跳过awk,直接用sed匹配目标行并一次性完成格式转换,更高效简洁:

#!/bin/bash
strversion=$(apache2ctl -v | sed -n 's/^Server version: Apache\/\(.*\) (Debian)/Apache version \1/p')
echo "$strversion"
exit 0

解释:

  • -n 参数让sed只输出匹配成功的行
  • 正则表达式匹配以Server version:开头的行,捕获Apache/到 (Debian)之间的版本号,替换为Apache version加捕获的版本号后打印结果

方法2:在现有命令基础上调整输出

如果想保留原有命令链,只需在输出阶段用sed替换/为version即可:

#!/bin/bash

strversion=`apache2ctl -v | awk '{print $3}' | sed  's/(Debian)//g;s/Server//g;s/built//g;s/2022-06-09T04:26:43//g'`

echo "$strversion" | sed 's/Apache\//Apache version /'
exit 0

也可以直接在原有sed命令末尾追加替换规则,一步到位:

strversion=`apache2ctl -v | awk '{print $3}' | sed  's/(Debian)//g;s/Server//g;s/built//g;s/2022-06-09T04:26:43//g;s/Apache\//Apache version /'`

内容的提问来源于stack exchange,提问作者The-Exterminator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:01:36