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

如何提取指定目录下的所有变量到单个文件并去除重复项

变量提取去重解决方法

原命令问题

  • 第一步的grep -rI "\$.*" folder/ >> output.txt匹配规则太宽泛,\$.*会匹配$之后的整行内容,无法单独定位变量片段
  • 第二步的sed命令仅实现了打印符合规则的行,没有单独提取变量名的逻辑,自然无法得到预期结果

正确实现方案

你可以直接从目标目录扫描,也可以基于已生成的output.txt处理,两种方案如下:

方案1:直接扫描目标目录提取去重

grep -rIoP '\$\{?[A-Za-z0-9_]+' folder/ | sed -E 's/^\$\{?//' | sort -u > unique_vars.txt

命令各部分说明:

  • grep -rIoP:-r递归扫描目录,-I跳过二进制文件,-o仅输出匹配到的片段而非整行,-P启用Perl正则语法
  • 正则\$\{?[A-Za-z0-9_]+:匹配Shell变量的两种标准格式$VAR和${VAR}的前缀部分
  • sed -E 's/^\$\{?//':去除匹配结果开头的$或者${,得到纯变量名
  • sort -u:对变量名排序并去除重复项
  • 最终结果写入unique_vars.txt文件

方案2:基于已生成的output.txt处理

grep -oP '\$\{?[A-Za-z0-9_]+' output.txt | sed -E 's/^\$\{?//' | sort -u > unique_vars.txt

只需要把第一步的扫描源替换为你已经生成的output.txt即可,后续处理逻辑和方案1完全一致。

用你提供的示例内容运行后,会得到去重后的纯变量名列表,包含MY_REGISTY、MY_PR、IMAGE_NAME、VERSION等所有你需要的变量。

内容的提问来源于stack exchange,提问作者Oleh F.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:15:02