我在django应用程序中重命名了一些东西,我想以递归方式搜索并替换所有模板中的标记。我尝试使用find和sed这样做。
find . -name *.html -exec sed -i 's/\{\{\s*oldtag\s*\}\}/{{ newtag }}/g' {} \;
我收到此错误。
sed: -e expression #1, char 44: Invalid preceding regular expression
好的,所以我尝试了很多不同的东西来尝试让它发挥作用。我尝试了取消和双重逃避花括号。我尝试使用[\ t]而不是\ s。似乎没什么用。某些组合不会出错,但它们也找不到或替换任何内容。更糟糕的是,有时我会遇到其他错误。
find: paths must precede expression: index.html
路径如何在表达式之前? 。是路径,它紧跟在find命令之后。它位于所有表达式之前。
答案 0 :(得分:1)
尝试:
find . -name '*.html' -exec sed -i 's|{{\s*oldtag\s*}}|{{ newtag }}|g' {} +
有一些假设:
答案 1 :(得分:0)
您应该转发'
和\
个字符。这应该有效:
find . -name *.html -exec sed -i \'s/{{\\s*oldtag\\s*}}/{{ newtag }}/g\' {} \;
提示:您可以随时在单词echo
之前插入sed
,以查看其外观的打印输出(查看已转义的内容)。