查找并替换以标准化空格

时间:2011-09-13 22:49:39

标签: regex unix grep

我有大约50个模板,我想在变量上标准化空白,如下所示 -

Inputs: {{variable}}, {{ something  }}, {{  test  }}, etc.
Output: {{ variable }}, {{ something }}, {{ test }} # one space within inner bracket

如何查找并替换myproject/templates中的所有文件?谢谢。

1 个答案:

答案 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*\)保存的变量名,另一个空格和两个闭括号。

希望有所帮助!