argsを含むフォルダに.yamlファイルのスプレッドシートを作成してみてください。

argsを含むフォルダに.yamlファイルのスプレッドシートを作成してみてください。

.yaml ファイルでいっぱいのフォルダがあります。各 yaml ファイルには URL 引数などがあります。最初の列にファイル名が含まれ、2番目の列にURL引数の値を含むスプレッドシートを取得したいと思います。これを行う単純なコンソールコマンドはありますか?

yamlファイルでは、デフォルトでは次のようになります。

パラメータ:

- {引数:ファイル名、値:「テストファイル」}

- {引数: URL、値: "fakesite.com"}

目的は、フォルダ内の各yamlファイルに対してこれら2つの値を並べて表示するスプレッドシートを作成することです。

答え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: ")

したがって、ファイル名を収集するためにforループを使用してfindまたは単純ディレクトリを使用できます。ファイル名にスペースや奇妙な文字がありませんか?

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 

そこからは一歩だけです。

関連情報