サーバーのバックアップファイルを一覧表示すると、次の結果が表示されます。
{
"backupFiles": [
"XYZ_Backup_2.0.0.0-417_2022_08_14_12_10.gz",
"XYZ_Backup_2.0.0.0-417_2022_08_13_11_20.gz",
"XYZ_Backup_2.0.0.0-417_2022_08_13_15_11.gz",
],
"total": 3
}
出力を変数に保存します。では、ファイル名だけをどのように取得できますか?
XYZ_Backup_2.0.0.0-417_2022_08_14_12_10.gz
ベストアンサー1
これは実際には破損したJSONですが(少なくとも私が知っている限り)有効なYAMLです(ほとんどのJSONの親セットなので、何が有効か無効であるかを言うのは難しいです。そうしないことを願っています)。
したがって、YAML用に作成されたツールはそれを処理できます。私は使うyq
jq
これは、YAMLを有効なJSONに動的に変換するラッパーです。したがって、あなたができることをすべて行うことがjq
できます。yq
あなたの場合
<yamldata.txt yq '.backupFiles []'
あなたのため
"XYZ_Backup_2.0.0.0-417_2022_08_14_12_10.gz"
"XYZ_Backup_2.0.0.0-417_2022_08_13_11_20.gz"
"XYZ_Backup_2.0.0.0-417_2022_08_13_15_11.gz"
最初のものだけが欲しいなら、
<yamldata.txt yq '.backupFiles[0]'
印刷
"XYZ_Backup_2.0.0.0-417_2022_08_14_12_10.gz"
引用符が役に立つことがよくありますが、それらを削除するにはを"
使用してください--raw-output
。