http://qs321.pair.com?node_id=1156169


in reply to Re: search/replace one liners without clobbering
in thread search/replace one liners without clobbering

yes bool would get mangled, also any print f gets mangled as well if rint is replaced.

cases are

prefix 'c' OR 'f' OR both or neither suffix, 'l' OR 'f' OR both or neither

Replies are listed 'Best First'.
Re^3: search/replace one liners without clobbering
by FreeBeerReekingMonk (Deacon) on Feb 26, 2016 at 21:38 UTC
    You asked for a oneliner, which by I think you mean to give each function separately, so for "exp", it would be:

    perl -pi -e 's/\bc?${tgt}[fl]?\b/$tgt/g' -s -- -tgt=exp *.c;

    The problem is fabs, which means you need to consider it separately:

    perl -pi -e 'for $tgt(qw(exp log pow sqrt sin cos tan asin acos atan sinh cosh tanh asinh acosh atanh)){ s/\bc?${tgt}[fl]?\b/$tgt/g };s/\b[cf]abs[fl]?\b/fabs/g' *.c;

    addendum, with the | or you wanted, it would be:

    perl -pi -e 's/\bc?(exp|log|pow|sqrt|sin|cos|tan|asin|acos|atan|sinh|c +osh|tanh|asinh|acosh|atanh)[fl]?\b/$1/g; s/\b[cf]abs[fl]?\b/fabs/g'