Linux 从CLI更新YAML参数文件
我对CLI中的mkdocs YAML文件更新有疑问。YAML文件具有以下字符串:Linux 从CLI更新YAML参数文件,linux,sed,yaml,command-line-interface,Linux,Sed,Yaml,Command Line Interface,我对CLI中的mkdocs YAML文件更新有疑问。YAML文件具有以下字符串: ... site_name: Material for MkDocs ... 我需要的是操作site\u name参数: 在之前添加src/ 从参数中删除所有空格和特殊字符 输出应为: ... site_name: src/MaterialforMkDocs #OR site_name: src/Material_for_MkDocs ... 我做了以下操作,看起来它正在工作: newSiteName=$(gr
...
site_name: Material for MkDocs
...
我需要的是操作site\u 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:][]*站点名称:[[:blank:][]*/{
h;#复制该行
s//#删除以前的正则表达式
s/[[:blank:][]+/\ug;#将空格转换为下划线
s、 ^,src/,;#添加前缀
x;#交换保持空间和图案空间
s/:*/:/;#删除该值
G;#附加保留空间
s/\n/;#删除换行符
}
“mkdocs.yml
如果它看起来是正确的;添加
-i
选项。太棒了!只剩下一点,它不会删除特殊字符,例如,如果我有Mk!Docs
在参数中,它将离开,因此我更新您的呼叫并添加s/[^a-z a-z 0-9][/g;#删除通话中s//
之后的特殊字符
,它就可以工作了!输入site\u名称:Mk材料!文档
Outputsite\u name:src/Material\u for\u MkDocs
[^[:alnum:][ucode>更简洁,但同样具有描述性。