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

如何使用Awk处理grep输出,去除字符串双引号并获取完整版本值?

提取无引号的VERSION字段值的解决方案

你遇到的核心问题是awk默认以空白字符作为字段分隔符,导致带空格的版本字符串被拆成了多个片段——原输出里VERSION="20.04.3 LTS (Focal Fossa)"中的空格把一行拆成了VERSION="20.04.3、LTS、(Focal、Fossa)"这几个字段,所以直接用$1、$2自然拿不到完整的版本值。

下面给你几种实用的解决方法:

方法1:awk指定分隔符并移除引号

直接把等号设为字段分隔符,再用gsub去掉双引号:

grep '^VERSION=' /etc/os-release | awk -F'=' '{gsub(/"/, "", $2); print $2}'

执行后会输出:20.04.3 LTS (Focal Fossa)

方法2:单awk命令直接处理文件(更高效)

省去grep的管道,直接用awk匹配目标行并处理,性能更好:

awk -F'=' '/^VERSION=/{gsub(/"/, "", $2); print $2}' /etc/os-release

方法3:用sed做字符串替换提取

利用sed的正则替换功能,直接提取引号内的内容:

sed -n 's/^VERSION="\(.*\)"/\1/p' /etc/os-release

这里的\(.*\)会捕获引号内的所有内容,\1表示引用这个捕获组,最终只输出捕获到的部分。

方法4:用bash内置变量处理(无需外部工具)

直接加载/etc/os-release里的变量,再用bash的字符串替换移除引号:

source /etc/os-release
echo "${VERSION//\"/}"

${VERSION//\"/}的作用是把变量VERSION里所有的双引号替换为空。

内容的提问来源于stack exchange,提问作者mahmood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:49:05