Hello LexPl and my late welcome to the monastery,

..the following is not wise nor beuatiful, but it works (added some space for readability and please note windows double quotes!)

cat lorem.txt Lorem ipsum dolor sit amet, consectetur adipisci elit, sed do eiusmod tempor incidunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipisci elit, sed do eiusmod tempor incidunt ut labore et dolore magna aliqua. perl -M"5;$S=shift;$R=shift;open $o,'>','new2.txt'" -ne "chomp;if($_=~ +/$S/){print qq/$_ $R?/;($_=$_)=~s/$S/$R/ if<STDIN>=~/y/}print$o $_.$/ +" ipsum REPLACE lorem.txt Lorem ipsum dolor sit amet, consectetur adipisci elit, REPLACE? y Lorem ipsum dolor sit amet, consectetur adipisci elit, REPLACE? n cat new2.txt Lorem REPLACE dolor sit amet, consectetur adipisci elit, sed do eiusmod tempor incidunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipisci elit, sed do eiusmod tempor incidunt ut labore et dolore magna aliqua.

L*

PS after some failure I gave up passing regexes as arguments and toying with perl -s ... -S=ipsum and whatalike

PPS add -MO=Deparse to see it better:

perl -MO=Deparse -M"5;$S=shift;$R=shift;open $o,'>','new2.txt'" -ne "c +homp;if($_=~/$S/){print qq/$_ $R?/;($_=$_)=~s/$S/$R/ if<STDIN>=~/y/}p +rint$o $_.$/" sub BEGIN { require 5; () } $S = shift @ARGV; $R = shift @ARGV; open $o, '>', 'new2.txt'; LINE: while (defined($_ = readline ARGV)) { chomp $_; if ($_ =~ /$S/) { print "$_ $R?"; ($_ = $_) =~ s/$S/$R/ if readline(STDIN) =~ /y/; } print $o $_ . $/; } -e syntax OK

PPPS given perlrun doc inaccurate on -s switch

perl -M"5;open $o,'>','new2.txt'" -sne "chomp;if($_=~/$S/){print qq/$_ $R?/;($_=$_)=~s/$S/$R/ if<STDIN>=~/y/}print$o $_.$/"  -- -S=ipsum -R=REPLACE lorem.txt

..works!

There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.

In reply to Re: Selective replace based on user input -- oneliner by Discipulus
in thread Selective replace based on user input by LexPl

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.