我们有一些带有内部文件路径的资产文件,例如"/Users/testuser/dev/app-path/widget"
下面的。
测试.js
[["[email protected]","/Users/testuser/dev/app-path/widget"]],"_development":true,
"_where":"/Users/testuser/dev/app-path/widget","author"
我正在寻找SED
将所有内部文件路径替换为空白/空细绳。当我grep
按照下面的方式做时正则表达式作品
grep -E '"/Users\/.*?"' ./resources/test.js
但是,当我尝试使用SED
下面的正则表达式时,我的文件的文件路径是不是被空白字符串替换,不知道我错过了什么。请建议。
find ./resources -type f -exec sed -i -e 's/"\/Users\/.*?"/""/g' {} \;
我尝试查看其他类似的帖子,但找不到任何相关的内容来替换"/Users/testuser/dev/app-path/widget"
-->""
正则表达式适用于正则表达式101:https://regex101.com/r/YycQkX/2/
答案1
要在文件中替换"/Users/testuser/dev/app-path/widget"
为,您可以使用 POSIX 基本正则表达式 (BRE):""
find ./resources -type f -exec sed -i 's/"\/Users\/[^"]*"/""/g' {} +
该[^"]*
部分与任何非字符序列匹配"
。
编辑:
您还可以在替换中使用不同的分隔符来防止斜杠转义(感谢@埃德·莫顿),例如使用 a:
代替/
:
find ./resources -type f -exec sed -i 's:"/Users/[^"]*":"":g' {} +