尝试在包含 args 的文件夹中生成 .yaml 文件的电子表格

尝试在包含 args 的文件夹中生成 .yaml 文件的电子表格

我有一个充满 .yaml 文件的文件夹。在每个 yaml 文件中,我都有一个 url arg 等。我只是想获取一个电子表格,该电子表格的第一列中包含文件名,第二列中包含 url arg 的值。有一个简单的控制台命令可以做到这一点吗?

在 yaml 文件中,它看起来基本上是这样的

参数:

- {arg:文件名,值:“testfile”}

- {arg:url,值:“fakesite.com”}

目标是拥有一个电子表格,其中为文件夹中的每个 yaml 文件并排列出这两个值。

答案1

看一下yq,它是jq.

答案2

对于一个文件:

res=$(echo 'args:

- {arg: file_name, value: "testfile"}

- {arg: url, value: "fakesite.com"}' | egrep "file|url")
echo $res
- {arg: file_name, value: "testfile"} - {arg: url, value: "fakesite.com"}

您可能需要缩小 grep 模式的范围,以减少误报:

egrep -- "- \{arg: (file_name|url), value: ")

因此,可以使用 find 或仅使用 for 循环的平面目录来收集文件名。文件名中没有空格或时髦字符吗?

for f in *.yaml; do res=$(egrep -- "- \{arg: (file_name|url), value: " $f); echo $res; done > yaml.csv 
cat yaml.csv 
- {arg: file_name, value: "testfile"} - {arg: url, value: "fakesite.com"}
- {arg: file_name, value: "testfile"} - {arg: url, value: "fakesite.com"}

或者更好的可读性

for f in *.yaml
do 
  res=$(egrep -- "- \{arg: (file_name|url), value: " $f)
  echo $res
done > yaml.csv 

从那里开始,这应该只是一个步骤。

相关内容