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

Shell脚本提取文件每行中的Diagram ID并保存至新文件

Shell脚本提取文件每行中的Diagram ID并保存至新文件

别担心,刚接触Shell脚本确实容易有点懵,我来帮你快速搞定这个提取Diagram ID的需求!其实不用写复杂的循环也能轻松实现,给你几种简单好用的方法:

方法一:用grep快速提取(推荐新手用,简洁高效)

grep是处理文本匹配的利器,一行命令就能搞定:

grep -oP 'DiaMatch\(\K\d+' 你的输入文件名.txt > 保存结果的文件名.txt

我给你拆解一下每个参数的作用:

  • -o:只输出匹配到的内容,而不是整行
  • -P:启用Perl风格的正则表达式,方便我们精准匹配
  • DiaMatch\(\K\d+:这个正则的意思是,找到DiaMatch(之后的所有数字(\d+),\K会忽略掉前面的DiaMatch(,只保留后面的数字部分

方法二:用sed实现提取

sed是流编辑器,也能轻松完成替换提取:

sed -n 's/.*DiaMatch(\([0-9]*\)).*/\1/p' 你的输入文件名.txt > 保存结果的文件名.txt

解释一下:

  • -n:不让sed默认输出每一行,只输出我们处理后的内容
  • s/.*DiaMatch(\([0-9]*\)).*/\1/p:这是替换命令,把整行内容替换成DiaMatch()括号里的数字(\([0-9]*\)是捕获括号里的数字,\1引用这个捕获的内容),最后p是打印替换后的结果

如果你想继续用自己写的while循环

要是你更习惯用while read的方式,也可以把提取逻辑放到循环里:

while read line; do
  # 对每一行提取ID并输出
  echo "$line" | grep -oP 'DiaMatch\(\K\d+'
done < 你的输入文件名.txt > 保存结果的文件名.txt

不管用哪种方法,最终都会把所有提取到的ID(比如13、14、15这些)逐行保存到你指定的结果文件里,其他无关内容都会被排除掉~记得把命令里的文件名换成你实际的文件名哦!

备注:内容来源于stack exchange,提问作者Tanmoy Pati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:13:04