shell - Comment multiple lines in a file using sed -
i working on mac osx. writing shell script add prefix "//" log messages in file. wrote following sed script:
sed -i '' "s|"log+*"|"//log"|g" filename
the script working fine when log message has single line. if log has multiple lines fails. eg:
log("hi how you");
the output comes out :
//log("hi how you");
but, want output be:
//log("hi // how // you");
since haven't used sed don't know how this. so, possible using sed. if yes how?
thanks
the simplest method use address ranges
sed "/^\s*log.*;$/ s|^|//|; /^\s*log/, /);$/ s|^|//|" input
what does?
/^\s*log.*;$/ s|^|//|
if line startslog
, ends;
substitute start,^
//
/\s*^log/, /);$/ s|^|//|"
/^log/, /);$/
address range. lines within range, substitution performed. range of lines start first regex match end match.
test
$ cat input log("hi how you"); not commented; log ("test); not commented; $ sed "/^\s*log.*;$/ s|^|//|; /^\s*log/, /);$/ s|^|//|" input //log("hi // how // you"); not commented; //log ("test); not commented;
Comments
Post a Comment