01-15-2009
find and replace coding in perl
#!/usr/bin/perl
#bash#./ff.pl --prod \/opt\/ WebSphere5 --cob \/opt\/was6mig\/WebSphere5 -base
use File::Find;
use Getopt::Long;
#$dmPath="/scratch/optcob/cells.dmgr.tmp";
#Modify the Basepath with new copied WAS5 copied location.
$basePath="/opt/IBM/WAS6.1/IBMIHS/CI_CNV_CRD_HTTPServer";
$dmPath="/dm5"; # don't worry about this $basePath="/app/WebSphere6/profiles";
$tmpf="/tmp/tmpf";
sub ModFileByRegex {
my ($tok, $repl, $fpat, $Path) = (@_);
my $cnt = 0;
sub fwanted {
-f &&
$File::Find::name =~ /$fpat/ && do {
open (INF, $File::Find::name) || die "cannot open $File::Find::name : $!";
open (TMPF, ">$tmpf") || die "cannot open $tmpf for writing: $!";
my @input = <INF>;
my $change = grep { s/$tok/$repl/g } @input;
if ($change > 0) {
close INF;
print TMPF @input;
close TMPF;
print "updating/saving copy of $File::Find::name\n";
rename $File::Find::name, $File::Find::name . ".org";
print `cp -p $tmpf $File::Find::name\n`;
$cnt++;
}
}
}
print "searching from $Path for $tok in files called $fpat\n";
find (\&fwanted, $Path);
return ($cnt);
}
sub findDirByRegex {
my ($tok, $repl, $Path) = (@_);
my $cnt = 0;
sub wanted {
-d &&
$File::Find::name =~ /$tok[\w\.]*?$/ &&
push @DIRL, $File::Find::name;
}
print "Looking for directories from $Path called $tok\n";
find (\&wanted, $Path);
while ($_ = pop @DIRL) {
$src = $_;
s/$tok([\w\.]*)?$/$repl$1/;
print "rename $src, $_\n";
rename $src, $_ || warn "could not rename last file, please check";
$cnt++;
}
return ($cnt);
}
%optctl = ();
GetOptions (\%optctl, "prod=s", "cob=s", "dmgr", "base");
print "options set:\n\n";
print "prod system (source system) :" . $optctl{"prod"} . "\n";; print "cob system (target system) :" . $optctl{"cob"} . "\n"; print "Do Deployment Manager\n" if ($optctl{"dmgr"} == 1); print "Do Base WebSphere\n" if ($optctl{"base"} == 1);
print "\n\n";
if ($optctl{"dmgr"} == 1) {
print "updating Deployment Manager XML files\n";
$cnt = ModFileByRegex ($optctl{"prod"}, $optctl{"cob"}, ".*", $dmPath);
print "$cnt XML files were updated\n"; }
if ($optctl{"base"} == 1) {
print "updating WebSphere Base XML files\n";
$cnt = ModFileByRegex ($optctl{"prod"}, $optctl{"cob"}, ".*", $basePath);
print "$cnt XML files were updated\n"; }
if ($optctl{"dmgr"} == 1) {
print "updating Deployment Manager base Directory Names\n";
$cnt = findDirByRegex ($optctl{"prod"}, $optctl{"cob"}, $dmPath);
print "$cnt directory names updated\n"; }
if ($optctl{"base"} == 1) {
print "updating WebSphere base Directory Names\n";
$cnt = findDirByRegex ($optctl{"prod"}, $optctl{"cob"}, $basePath);
print "$cnt directory names updated\n"; }
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
hi guys,
Suppose you have 100 files in a folder and you want to replace all occurances of a word say "ABCD" in those files with "DCBA", how would you do
it ???
jatin (13 Replies)
Discussion started by: jatins_s
13 Replies
2. UNIX for Dummies Questions & Answers
I used the following script
cd pathname
for y in `ls *`;
do sed "s/ABCD/DCBA/g" $y > temp; mv temp $y;
done
and it worked fine for finding and replacing strings with names etc. in all files of the given path.
I'm trying to replace a string which consists of path (location of file)
... (2 Replies)
Discussion started by: pharos467
2 Replies
3. Shell Programming and Scripting
I have multiple script files that I have created, that allow me to simply replace a few tokens at the top of the file, and then not have to go through the actual script and change anything. I have about 10 of them, but I was hoping to find a way to write a small script that would allow me to input... (20 Replies)
Discussion started by: cbo0485
20 Replies
4. Shell Programming and Scripting
find . -type f -name "*.sql" -print|xargs perl -i -pe 's/pattern/replaced/g'
this is simple logic to find and replace in multiple files & folders
Hope this helps.
Thanks
Zaheer (0 Replies)
Discussion started by: Zaheer.mic
0 Replies
5. UNIX for Dummies Questions & Answers
Hi, I'm new to Unix. My understanding of Unix and its command is very limited.
I have about 1000 text files that have a word in it that I need to replace with a different word.
e.g.
a.txt has 1 line of txt: monday, tuesday, wednesday
b.txt has 1 line of txt: monday, tuesday,... (5 Replies)
Discussion started by: millsy5
5 Replies
6. Shell Programming and Scripting
Hey guys. I know pratically 0 about Linux, so could anyone please give me instructions on how to accomplish this ?
The distro is RedHat 4.1.2 and i need to find and replace a multiple lines string in several php files across subdirectories.
So lets say im at root/dir1/dir2/ , when i execute... (12 Replies)
Discussion started by: spfc_dmt
12 Replies
7. Shell Programming and Scripting
Hi all
This is my first post. Please bear with me with all my mistakes. I started learning shell since couple of days now and this might be quite basic for all, i want to search for files in a directory containing specific string and replace it with new string. The code i wrote is quite bulky... (2 Replies)
Discussion started by: theprogrammer
2 Replies
8. Shell Programming and Scripting
Hi,
following Perl code i used for finding multiple strings and replace with single string.
code:
#!/usr/bin/perl
my @files = <*.txt>;
foreach $fileName (@files) {
print "$fileName\n";
my $searchStr = ',rdata\)' | ',,rdata\)' | ', ,rdata\)';
my $replaceStr =... (2 Replies)
Discussion started by: chettyravi
2 Replies
9. Shell Programming and Scripting
Hi,
I have php files in main dir and sub dir's as well.
I need to find "new mysqli('localhost', 'System', 'xxxxxx', 'System', '3306');"
and replace as "new mysqli('localhost', 'unx_sys', 'yyyy', 'unx_sys', '3306');"
I tried like:
sed 's/new mysqli\(*\)\;$/new... (1 Reply)
Discussion started by: ashokvpp
1 Replies
10. UNIX for Beginners Questions & Answers
Hello everybody, I need your help.
I have a php site that was expoited, the hacker has injected into many php files a phishing code that was discovered and removed in order to have again a clean code. Now we need to remove from many php files that malware. I need to create a script that find and... (2 Replies)
Discussion started by: ninocap
2 Replies