首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux递归替换文件中的字符串

linux递归替换文件中的字符串
EN

Stack Overflow用户
提问于 2021-09-20 11:08:20
回答 1查看 316关注 0票数 0

我有一个文件夹,里面装满了*.java文件。它包含以下方法:

代码语言:javascript
复制
options.addArguments(//"--no-sandbox", // trying to make browser opening faster, but this argument can have security implications
            "--disable-extensions" // avoid the chrome automation extension crash
            , "--no-proxy-server" // trying to make browser opening faster
            , "--proxy-server='direct://'" // trying to make browser opening faster
            , "--proxy-bypass-list=*" // trying to make browser opening faster
            , "--proxy-server=" // trying to make browser opening faster
            // ,"--blink-settings=imagesEnabled=false" // disable images loading for faster testing
            );

我想将其修改如下:

代码语言:javascript
复制
options.addArguments("--no-sandbox", // trying to make browser opening faster, but this argument can have security implications
            "--disable-dev-shm-usage"
            , "--disable-extensions" // avoid the chrome automation extension crash
            , "--no-proxy-server" // trying to make browser opening faster
            , "--proxy-server='direct://'" // trying to make browser opening faster
            , "--proxy-bypass-list=*" // trying to make browser opening faster
            , "--proxy-server=" // trying to make browser opening faster
            // ,"--blink-settings=imagesEnabled=false" // disable images loading for faster testing
            );

我在论坛上搜索并找到了一些解决方案,复制字符串是我想要的,所以我尝试了以下几点:

代码语言:javascript
复制
grep --null -rl //"--no-sandbox" -l | tr '\n' ' ' | xargs --null sed -i 's///"--no-sandbox"/"--no-sandbox",
            "--disable-dev-shm-usage|,/g'

但它给我带来了以下错误:

代码语言:javascript
复制
sed: -e expression #1, char 6: unknown option to `s'

我想old_string和new_string格式是这里的问题。我怎样才能解决这个问题,或者以更有效率和更有意义的方式去做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-21 05:10:45

如果GNU sed可用,不如:

代码语言:javascript
复制
sed -i -zE 's#//("--no-sandbox"[^\n]+\n[[:blank:]]+)#\1"--disable-dev-shm-usage"\n            , #' file.java

-z选项sed将行分隔符分配给NUL字符,它允许使用换行符分隔整行。

如果希望递归地对*.java文件执行相同的替换,请尝试:

代码语言:javascript
复制
find . -type f -name "*.java" -print0 | xargs -0 sed -i -zE 's#//("--no-sandbox"[^\n]+\n[[:blank:]]+)#\1"--disable-dev-shm-usage"\n            , #'

由于-i选项强制覆盖原始文件,请确保在测试之前备份文件(或将备份后缀设置为-i选项)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69253394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档