.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
そこからは一歩だけです。