You need to enable JavaScript to run this app. Linux环境下如何从文件指定行提取双引号包裹的内容
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下如何从文件指定行提取双引号包裹的内容

实现方案

你可以直接用sed一步完成提取,不需要先读取整行再二次处理,也可以用shell原生参数扩展处理已读取的行内容,以下是几种可选方法:

方法1:sed单步直接提取(推荐,仅读取一次文件)

直接在sed中指定处理第9行,同时匹配提取双引号内的内容:

check_rcon=$(sed -n '9s/^rconpassword="\([^"]*\)".*/\1/p' "$HOME/test.cfg")
echo "$check_rcon"

命令说明:

  • -n 关闭sed默认输出,只打印匹配成功的内容
  • 9 指定仅处理第9行
  • 替换规则匹配rconpassword="xxx"格式,捕获双引号之间的所有非双引号内容,输出捕获到的内容

方法2:shell原生参数扩展(无外部工具调用,效率更高)

如果你已经拿到了完整的第9行内容存到了$check_rcon变量中,可以直接用shell内置的字符串处理能力提取,不需要调用额外命令:

# 先删除开头到第一个双引号的所有内容
rcon_val=${check_rcon#*\"}
# 再删除从最后一个双引号到结尾的所有内容
rcon_val=${rcon_val%\"*}

echo "$rcon_val"

方法3:awk实现

也可以用awk按双引号拆分第9行,直接取拆分后的第二个字段:

check_rcon=$(awk 'NR==9{split($0, arr, "\""); print arr[2]}' "$HOME/test.cfg")
echo "$check_rcon"

注意:原代码中的eval属于多余用法,且存在安全风险,这里完全不需要使用,同时路径变量建议用双引号包裹,避免路径存在空格时执行报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 21:12:02