| 
     
       |  |  |  | 
            
              | 
             
               | 
               
                 |  | UGU: Unix Guru Universe - Unix Tip #4624- November  7, 2024
 -  Home : Help
 : Today's Tip Unix Tip #4624- November  7, 2024
 
 
EAT YOUR PERL PIE 
Mom always sed, "eat your Perl pie"!
 
 A common task is to substitute
 text strings within one or
 more files.  The sed string
 substitution command is often
 used to accomplish this, where
 sed is passed a file name, the
 string substitutions are written
 to another file, and then that
 file is copied over the first
 file to effect the changes
 desired in the original.
 
 This approach has some inherent
 problems.  The command syntax is
 lengthy and cumbersome, a
 secondary file is created
 which involves additional disk
 I/O, and when that file is
 copied or moved back over the
 first one, permissions problems
 and file ownership problems can
 be created.  If your umask
 doesn't match the permissions of
 the original file, then the
 permissions of the final modified
 file will be different than those
 of the original.  Likewise,
 default ownerships and group
 names are imposed on the temporary
 copy, and if one is not careful,
 when the temporary copy is written
 back to the original file, these
 can destroy the original file's
 ownership and group information.
 
 A much better way to accomplish
 text substitution within a file or
 group of files is to use the
 "perl pie" approach, as shown here
 on file foo:
 
 perl -p -i -e 's/original text string/replacement string' foo
 
 The above command will replace the
 first instance of "original text
 string" with "replacement string"
 in file foo.  If you want to
 perform this globally within the
 file, add the /g global specifier
 at the back end, as follows:
 
 perl -p -i -e 's/original text string/replacementstring/g' foo
 
 To act on several files in the
 same directory, change the file
 specification as needed, by
 specifying foo*, *, or whatever
 you need.
 
 Note that perl uses the exact
 same syntax for the actual string
 substitution portion of the command
 as sed does, which makes the command
 syntax easy to remember. However,
 perl performs the entire operation
 on the file without the use of any
 secondary files needing to be
 created, which eliminates the extra
 disk I/O and the potential
 permissions and ownership issues.
 
 
 
 This tip generously supported by: jem@postfive.rose.hp.com
 
 
 
 NOTE: All tips provided are USE AT YOUR OWN RISK. Tips are submitted
by various unix admins around the globe. UGU suggest you read and
test each tip in a non-volitile environment before placing into
production.
 
 LAST 5 TIPS
 4623
 - CHANGING A PRINT QUEUE IP
 4622
 - MOVING FILES AROUND
 4621
 - GOOD TIME FOR CRON
 4620
 - PATHS EASIER TO READ
 4619
 - KEEP THAT USER OUT!
 I want to 
 SUBSCRIBE
 and get a UGU Tip everyday.
 I want to 
 UNSUBSCRIBE
 and NOT get a UGU Tip everyday.
 If you have a UNIX TIP let us know, we just may use it:
(All tips become the property of the Unix Guru Universe)
 |  |  
                 |  |  
                 |   Copyright 1994-2024 Unix Guru Universe 
 |  |  |  |  |