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

如何在Bash脚本中根据resource-id提取XML节点的text值

Bash提取指定resource-id的XML节点文本值

针对无结构文本形式的XML文件,要提取resource-id为com.zhiliaoapp.musically:id/hzk的节点对应的text内容,可通过以下几种文本处理工具组合实现:

方法1:grep + sed 组合命令

适用于resource-id行和text行不在同一行的场景:

grep -A5 "com.zhiliaoapp.musically:id/hzk" your_file.xml | grep -oP '(?<=text=")[^"]+'
  • -A5:匹配到目标resource-id的行后,额外输出后续5行(可根据实际XML节点的换行情况调整数字,确保覆盖到包含text属性的行)
  • -oP:启用Perl正则语法,仅输出匹配到的目标内容
  • (?<=text=")[^"]+:通过正向预查,精准提取text="后到下一个双引号之间的文本内容

方法2:sed 单命令匹配

适用于resource-id和text属性在同一行的场景:

sed -n 's/.*resource-id="com.zhiliaoapp.musically:id\/hzk".*text="\([^"]*\)".*/\1/p' your_file.xml
  • -n:仅输出匹配成功的行
  • 正则表达式会匹配包含目标resource-id的整行,捕获text属性的取值并输出

额外说明

  • 如果XML节点格式有变动(比如属性顺序、换行位置不同),需调整正则表达式或grep的-A参数行数
  • 若存在多个匹配节点,上述命令会输出所有结果;只需第一个匹配值的话,可追加| head -n1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:25:15