从 CLI 更新 YAML 参数文件
Update YAML parameter file from CLI
我有一个关于从 CLI 更新 mkdocs YAML 文件的问题。 YAML 文件具有以下字符串:
...
site_name: Material for MkDocs
...
我需要的是操作site_name
参数:
- 在
之前添加src/
- 从参数中删除所有空格和特殊字符。
输出应该是:
...
site_name: src/MaterialforMkDocs
#OR
site_name: src/Material_for_MkDocs
...
我做了以下操作,看起来它在工作:
newSiteName=$(grep "site_name:" mkdocs.yml | sed 's/ //g' | sed 's/[^a-z A-Z 0-9 _]//g' | sed 's/site_name/site_name: src\//')
sed -i "s|site_name:.*|$newSiteName|" mkdocs.yml
我坚信这可以很容易地解决。
调用 sed 一次:
sed -E '
/^[[:blank:]]*site_name:[[:blank:]]*/ {
h ;# copy the line
s/// ;# remove the previous regex
s/[[:blank:]]+/_/g ;# convert whitespace to underscores
s,^,src/, ;# add the prefix
x ;# swap hold and pattern spaces
s/:.*/: / ;# remove the value
G ;# append the hold space
s/\n// ;# remove the newline
}
' mkdocs.yml
如果看起来不错;添加 -i
选项。
您还可以使用 yq - 专门用于 yaml 文档的工具,包括编辑前言:
yq e --front-matter=process '.site_name |= "src/" + sub("[^a-zA-Z]", "")' file.yaml
见https://mikefarah.gitbook.io/yq/usage/front-matter#process-front-matter
爆料:我写了yq
我有一个关于从 CLI 更新 mkdocs YAML 文件的问题。 YAML 文件具有以下字符串:
...
site_name: Material for MkDocs
...
我需要的是操作site_name
参数:
- 在 之前添加
- 从参数中删除所有空格和特殊字符。
src/
输出应该是:
...
site_name: src/MaterialforMkDocs
#OR
site_name: src/Material_for_MkDocs
...
我做了以下操作,看起来它在工作:
newSiteName=$(grep "site_name:" mkdocs.yml | sed 's/ //g' | sed 's/[^a-z A-Z 0-9 _]//g' | sed 's/site_name/site_name: src\//')
sed -i "s|site_name:.*|$newSiteName|" mkdocs.yml
我坚信这可以很容易地解决。
调用 sed 一次:
sed -E '
/^[[:blank:]]*site_name:[[:blank:]]*/ {
h ;# copy the line
s/// ;# remove the previous regex
s/[[:blank:]]+/_/g ;# convert whitespace to underscores
s,^,src/, ;# add the prefix
x ;# swap hold and pattern spaces
s/:.*/: / ;# remove the value
G ;# append the hold space
s/\n// ;# remove the newline
}
' mkdocs.yml
如果看起来不错;添加 -i
选项。
您还可以使用 yq - 专门用于 yaml 文档的工具,包括编辑前言:
yq e --front-matter=process '.site_name |= "src/" + sub("[^a-zA-Z]", "")' file.yaml
见https://mikefarah.gitbook.io/yq/usage/front-matter#process-front-matter
爆料:我写了yq