SED 查找并替换文件中的内部文件路径

SED 查找并替换文件中的内部文件路径

我们有一些带有内部文件路径的资产文件,例如"/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' {} \;

SED 示例

我尝试查看其他类似的帖子,但找不到任何相关的内容来替换"/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' {} +

相关内容