🦔
長文字列のYAML記載方法
長文字列の問題
YAMLは人間に優しいフォーマットです。多くのコンフィグはYAMLを採用しておいます。
値の文字列がスクリーンの幅を超えた場合、如何でしょう?
超えてない時でも、適切に改行すれば、読めやすい可能性があります。
複数行の記載パータン
テストのフルファイル
test.yaml
---
# 改行で区切り
foo1: |
test1
test2
# 改行で区切り(最後の改行を削除)
foo2: |-
test1
test2
# 改行で区切り(最後の改行を保留)
foo3: |+
test1
test2
# 半角スペースで区切り
bar1: >
test1
test2
# 半角スペースで区切り(最後の改行を削除)
bar2: >-
test1
test2
# 半角スペースで区切り(最後の改行を保留)
bar3: >+
test1
test2
# そのまま結合
go1: "\
test1\
test2\
"
# そのまま結合(改行の入れ例)
go2: "\
test1\n\
test2\
"
改行で区切り
'|'を使って、改行(\n)で複数行のデータを結合する。
最後の改行を一つに纏める
foo1: |
test1
test2
設定値の確認
$ yq -o=json '.foo1' test.yaml
"test1\ntest2\n"
最後の改行を全て削除する
foo2: |-
test1
test2
設定値の確認
$ yq -o=json '.foo2' test.yaml
"test1\ntest2"
最後の改行を保留する
foo3: |+
test1
test2
設定値の確認
$ yq -o=json '.foo3' test.yaml
"test1\ntest2\n\n"
半角スペースで区切り
'>'を使って、半角スペースで複数行のデータを結合する。
最後の改行を一つに纏める
bar1: >
test1
test2
設定値の確認
$ yq -o=json '.bar1' test.yaml
"test1 test2\n"
最後の改行を全て削除する
bar2: >-
test1
test2
設定値の確認
$ yq -o=json '.bar2' test.yaml
"test1 test2"
最後の改行を保留する
bar3: >+
test1
test2
設定値の確認
$ yq -o=json '.bar3' test.yaml
"test1 test2\n\n"
そのまま結合
各行の後ろに''を付けると、複数行のデータをそのまま結合する。
そのまま結合
go1: "\
test1\
test2\
"
設定値の確認
$ yq -o=json '.go1' test.yaml
"test1test2"
改行の入れ例(\n)
go2: "\
test1\n\
test2\
"
設定値の確認
$ yq -o=json '.go2' test.yaml
"test1\ntest2"
Discussion