I have a folder which is full of *.java files. it has the following method in it:
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
);
i wanted to change this as following:
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
);
I have searched in the forum and found some solutions, replce string is what i wanted so tried the following:
grep --null -rl //"--no-sandbox" -l | tr '\n' ' ' | xargs --null sed -i 's///"--no-sandbox"/"--no-sandbox",
"--disable-dev-shm-usage|,/g'
But it throwing me the following error:
sed: -e expression #1, char 6: unknown option to `s'
I guess the old_string and new_string formates are the problem here. how can I fix it, or do it in a more efficient and meaningful way.
CodePudding user response:
You can try this sed
sed '1s|//||;/disable-extensions/{s/ //;s/.*/\t ,&/};/--no-sandbox/a \\t "--disable-dev-shm-usage"' input_file
Remove //
from line 1
add ,
to line with disable-extensions
Append disable-dev-shm-usage
Output
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
);
CodePudding user response:
If GNU sed
is available, how about:
sed -i -zE 's#//("--no-sandbox"[^\n] \n[[:blank:]] )#\1"--disable-dev-shm-usage"\n , #' file.java
The -z
option to sed
assigns the line delimiter to NUL character
which enables to slurp whole lines separated by newline characters.
If you want to perform the same substitution on the *.java files recursively, please try:
find . -type f -name "*.java" -print0 | xargs -0 sed -i -zE 's#//("--no-sandbox"[^\n] \n[[:blank:]] )#\1"--disable-dev-shm-usage"\n , #'
As the -i
option forces to overwrite the original files, make sure to backup the files (or put the backup suffix to the -i option) before the test.