Hello,

I need a bit of help, usually for bulk replacement of a word in a bunch of files I do something like this

perl -pi -e 's/junk/replace/g' *.c

but i need to be able to put a conditional || on the search without clobbering, I'm updating old C files to C11 type generic. there are a lot of type specific qualifiers that i want to replace with generic

http://en.cppreference.com/w/c/numeric/tgmath

for example
generic float dbl long cfloat c dbl cmplx long atanh atanhf atanh atanhl catanhf catanh catanhl

so in general i need to check for suffixes and prefixes at the same time otherwise the search term will clobber the previous search.

i need to put a conditional in the search like this
perl -pi -e 's/c$tgt || c$tgtf || c$tgtl || $tgtf || $tgtl /$tgt/g' *. +c

where $tgt is the replacement string, for example

$tgt = tanh

i need to search and replace the following

tanhf  tanhl ctanhf ctanh ctanhl

but i get a complete mess out as the command still recurses and substitutes.

as well as the tricky one to replace 'rint' as it will conflict with printf

these old files have no spaces between operators but i'll space it out

exa=cexpl ( ccosl (arg), csinl ( arg) ) * cabsl (arg2) + csqrtl ( carg +l(arg3) + csqrtl(cargl(arg4) * cargl(arg5) + cargl (arg5) * cargl(arg +5));
result would be
exa = exp( cos(arg) , sin(arg) ) * fabs(arg2)+ sqrt(carg(arg3) + sqrt( +carg(arg4)*carg(arg5)+carg(arg5)*carg(arg5));

In reply to search/replace one liners without clobbering by f77coder

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.