我有一个文件夹,其中充满了*.java文件。它有以下方法:
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
);
我想这样修改:
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
);
我在论坛上搜索并找到了一些解决方案,替换字符串是我想要的,所以尝试如下:
grep --null -rl //"--no-sandbox" -l | tr 'n' ' ' | xargs --null sed -i 's///"--no-sandbox"/"--no-sandbox",
"--disable-dev-shm-usage|,/g'
但是它给了我以下错误:
sed: -e expression #1, char 6: unknown option to `s'
我猜old_string和new_string格式是这里的问题。我怎样才能解决它,或者用一种更有效、更有意义的方式来解决它。
如果GNU sed
可用,则:
sed -i -zE 's#//("--no-sandbox"[^n]+n[[:blank:]]+)#1"--disable-dev-shm-usage"n , #' file.java
sed
的-z
选项将行分隔符分配给NUL字符它允许用换行符分隔整行。
如果你想对*.java文件递归地执行相同的替换,请尝试:
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选项后)。