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

Linux正则匹配项加下划线与XML文件UUID前缀添下划线技术问询

给XML文件中的UUID批量添加前缀下划线

我来帮你解决这个给匹配到的UUID添加前缀下划线的问题,结合你已经用ag定位UUID的情况,这里有几个高效的Linux命令行方案:

方案一:直接用sed批量处理所有XML文件

如果需要处理目录下所有XML文件(不管是否包含UUID),可以用find配合sed完成批量替换:

find . -type f -name "*.xml" -exec sed -i.bak -r 's/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/_\1/g' {} +

命令解释:

  • find . -type f -name "*.xml":遍历当前目录及子目录下所有XML文件
  • -i.bak:让sed直接修改文件,并将原文件备份为.bak后缀(如果不需要备份,直接用-i即可)
  • -r:启用扩展正则表达式,这样正则里的大括号{}不用转义,更易读
  • s/([0-9a-f]{8}-...)/_\1/g:用捕获组匹配UUID格式的字符串,替换为_加上原匹配内容(\1代表第一个捕获组的内容),g表示行内全局匹配

方案二:结合ag过滤仅包含UUID的XML文件

如果你只想处理确实包含UUID的XML文件(避免无意义的文件操作),可以用ag先筛选出目标文件,再用sed替换:

ag -l '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' --xml | xargs sed -i.bak -r 's/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/_\1/g'

命令解释:

  • ag -l ...:-l选项让ag只输出匹配到UUID的文件名,--xml限定只搜索XML文件
  • xargs:将ag输出的文件名列表传递给sed,实现批量处理

验证替换效果

在执行批量替换前,建议先对单个测试文件验证替换逻辑,避免误操作:

sed -r 's/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/_\1/g' test.xml

这个命令会直接在终端输出替换后的内容,你可以确认是否符合预期(比如将bpmnElement="627b6548-aa19-47c6-a87c-31017810a934-_jbpm-unique-3490"变成bpmnElement="_627b6548-aa19-47c6-a87c-31017810a934-_jbpm-unique-3490")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:28:49