我有大约50个模板,我想在变量上标准化空白,如下所示 -
Inputs: {{variable}}, {{ something }}, {{ test }}, etc.
Output: {{ variable }}, {{ something }}, {{ test }} # one space within inner bracket
如何查找并替换myproject/templates
中的所有文件?谢谢。
答案 0 :(得分:4)
find /myproject/templates -type f | xargs sed -i 's/{{\s*\(\S*\)\s*}}/{{ \1 }}/g'
翻译:
find /myprojects/templates -type f
会在/myproject/templates
中找到常规文件中的所有项目(与符号链接或目录相对)。
xargs sed -i s/FIND/REPLACE/g'
将执行sed
来编辑每个文件(也就是说,它将用编辑的版本替换文件的内容)。它将搜索模式FIND
并将其全局替换为REPLACE
(即,它出现在该行的任何位置)。
FIND
模式的组件:
{{\s*
=两个大括号后跟零个或多个空白字符
\(\S*\)
=任何非 - 空白字符。 (这意味着您的变量名称不能包含内部空格。)转义的parens将保存这些字符(这是您的变量名称),以便在REPLACE
模式中使用。
\s*}}
=零个或多个空白字符后跟两个紧密括号。
REPLACE
模式的组件是两个开括号,一个空格,我们使用\(\S*\)
保存的变量名,另一个空格和两个闭括号。
希望有所帮助!