..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!
In reply to Re: Selective replace based on user input -- oneliner
by Discipulus
in thread Selective replace based on user input
by LexPl
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |