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.
|