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

如何在Bash中提取Java属性文件指定键对应的无引号值?

解决Bash中提取Java属性文件值时的引号问题

嘿,我明白你遇到的麻烦了——在Bash里提取Java属性文件的oracle.driver值时,总是带着双引号,用sed试了也没搞定对吧?别担心,给你几个实用的方法,轻松拿到纯driver1字符串:

方法1:用awk处理(兼容性拉满)

awk是处理这种键值对文本的好手,不管属性值带不带引号都能搞定:

awk -F'=' '/^oracle.driver=/ {
    gsub(/"/, "", $2)  # 把所有双引号都删掉
    print $2
}' your-app.properties

简单说下逻辑:

  • -F'=' 把等号当成字段分隔符,这样$2就是等号后面的内容
  • /^oracle.driver=/ 只挑以oracle.driver=开头的行,避免匹配到其他相似的键
  • gsub直接把$2里的双引号清空,最后打印出来就是纯值了

方法2:精准适配引号的sed写法

如果你的属性值明确是用双引号包起来的,用sed的捕获组可以一步到位:

sed -n 's/^oracle.driver="\(.*\)"/\1/p' your-app.properties

解释下:

  • -n 让sed只输出我们匹配到的行,不会乱输出其他内容
  • s/^oracle.driver="\(.*\)"/\1/p 这里的\(.*\)是捕获组,把"driver1"中间的driver1抓出来,用\1替换掉整行,最后打印这个捕获组的内容

要是你想兼容更多情况——比如等号后面有空格、属性值没加引号,就用这个更通用的版本:

sed -n 's/^oracle.driver=\s*"\?\([^"]*\)"\?/\1/p' your-app.properties

它会自动忽略等号后的空格,不管有没有引号都能准确提取值。

方法3:GNU grep快速提取(简洁高效)

如果你用的是Linux系统(自带GNU grep),可以用这个超简洁的命令:

grep -Po '^oracle.driver=\s*"\?\K[^"]*' your-app.properties

原理很简单:

  • -P 启用Perl正则,-o 只输出匹配到的部分
  • \K 相当于“忽略前面匹配的内容”,所以前面的oracle.driver=、空格、可选的引号都被跳过,直接输出后面的纯属性值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:17:51