ファイルの内容は次のとおりです。
Text1:
text_1: Text1 text_1
text_2:
- text
- file1:\\
- file2:\\
Text2:
text_1: Text2 text_1
text_2:
- text
- file3:\\
Text3:
etc
出力:指定されたTextnの "file:\"エントリを印刷します。これを達成するために、Linuxでsed / awkコマンドを使用する方法を知ってください。
例: test.txt ファイルの内容は次のとおりです。
$ cat test.txt
Text1:
text_1: Text1 text_1
text_2:
- text
- file1:\\
- file2:\\
Text2:
text_1: Text2 text1
text_2:
- text
- file3:\\
Text3:
etc
提案されているように、以下のgrepコマンドを試してください。これにより、test.txtファイルのすべての "file:\"エントリが印刷されます。 "Text1:" 一致の場合は出力として file1:\ と file2:\ のみが必要で、"Text2:" の場合は file3:\ のみ一致します。
ベストアンサー1
yq
新しく更新されたYAMLファイルに使用するには、次file
の値を選択できます。
yq '.Text1.text_2[] | select(. == "file*")' file.yaml
出力
file1:\\
file2:\\
別の値を選択したい場合は、TextN
適切なキー値を渡して次のようにします。
for key in Text1 Text2
do
printf 'Key %s:\n' "$key"
yqText="$key" yq 'eval("." + env(yqText) + ".text_2[]") | select(. == "file*")' file.yaml |
while IFS= read -r val
do
printf 'Value: %s\n' "$val"
done
echo
done
まだインストールしていない場合は、yq
Githubリポジトリから直接インストールできます。https://github.com/mikefarah/yq、またはホスティング環境の場合は、変更掲示板にお問い合わせください。