code_junkie

How do I replace a set of words in a file with another set in Perl?

Nov 12th, 2011
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. server name="${server1}" host="abc.com"
  2. server name="${server2}" host="webcs.com"
  3. server name="${server5}" host="httpvcs1.com"
  4. server name="${server6}" host="xyz.com"
  5. server name="${server7}" host="msg.com"
  6.  
  7. perl -pie 's/serverd{1-3}/myword/g' loginOut.txt > loginOut1.txt
  8.  
  9. [% ... %]
  10.  
  11. s/server/myword/g;
  12.  
  13. server1 abcd
  14. server2 bcde
  15. server3 cdef
  16. etc.
  17.  
  18. my %dict;
  19. while(<DICTFILE>){
  20. /(S+)s+(S+)/;
  21. $dict{$1}={$2};
  22. }
  23.  
  24. while(my $line = <>){
  25. foreach my $s (keys %dict){
  26. $line =~ s/$s/$dict{$s}/g;
  27. }
  28. print $line;
  29. }
  30.  
  31. perl -pe "s/{server/{file/g" in.txt > out.txt
  32.  
  33. server name="${file1}" host="abc.com"
  34. server name="${file2}" host="webcs.com"
  35. server name="${file5}" host="httpvcs1.com"
  36. server name="${file6}" host="xyz.com"
  37. server name="${file7}" host="msg.com"
  38.  
  39. perl -pie 's/{server/myword/g' loginOut.txt > loginOut1.txt
  40.  
  41. $what = 'server'; # The word to be replaced
  42. $with = 'file'; # Replacement
  43. s/(?<=${)$what(?=[^}]*})/$with/g;
Add Comment
Please, Sign In to add comment