如何用控制台命令提取文件夹中.yaml文件的文件名与url参数生成表格?
快速提取YAML文件参数并生成Markdown表格的控制台命令
当然有简便的方法!推荐用**yq**(一款专门处理YAML的轻量工具)配合Shell循环,既能保证解析YAML的准确性,又能快速生成你要的表格。下面是具体步骤:
1. 先安装yq(如果还没装)
不同系统的安装方式:
- Ubuntu/Debian:
sudo apt install yq - macOS(用Homebrew):
brew install yq - 其他系统:可以直接从官方仓库下载预编译的二进制文件
2. 执行生成表格的命令
直接在存放YAML文件的文件夹里运行这段命令:
# 输出Markdown表格表头 echo "| 文件名 | File Name 参数 | URL 参数 |" echo "|--------|----------------|----------|" # 遍历所有.yaml文件 for file in *.yaml; do # 提取file_name参数的值 file_name_val=$(yq '.args[] | select(.arg == "file_name").value' "$file") # 提取url参数的值 url_val=$(yq '.args[] | select(.arg == "url").value' "$file") # 输出表格行 echo "| $file | $file_name_val | $url_val |" done
3. 命令效果说明
运行后会直接在控制台输出标准的Markdown表格,示例效果如下:
| 文件名 | File Name 参数 | URL 参数 |
|---|---|---|
| test1.yaml | testfile | fakesite.com |
| demo.yaml | mydata | example.org |
备选方案:不用yq,用awk(适合临时场景)
如果不想额外安装工具,也可以用awk处理,但要注意这个方法依赖你的YAML格式严格和示例一致(比如arg: file_name和对应的value行紧挨着):
echo "| 文件名 | File Name 参数 | URL 参数 |" echo "|--------|----------------|----------|" for file in *.yaml; do file_name_val=$(awk -F'"' '/arg: file_name/{getline; print $2}' "$file") url_val=$(awk -F'"' '/arg: url/{getline; print $2}' "$file") echo "| $file | $file_name_val | $url_val |" done
⚠️ 提示:如果YAML文件格式有变动(比如缩进不同、参数行不相邻),这个awk命令可能失效,所以优先推荐yq方案。
内容的提问来源于stack exchange,提问作者Teddy




