

CH                             04/07/78                             CH


NAME
       ch - make changes in text files

SYNOPSIS
       ch [-ax] [expr ...] fromexpr [toexpr]

DESCRIPTION
       ch  copies  each  line  of  the  standard input to the standard
       output, globally substituting the  text  pattern  "toexpr"  for
       "fromexpr"  on  each  line  that  satisfies  matching  criteria
       defined by the leading expressions "expr" and the switches.  (A
       text  pattern  is  a  subset of a "regular expression"--see the
       "ed" writeup  for  a  complete  description.)   Three  possible
       courses  of  action are taken depending upon the number of text
       patterns(n) found in the command line:

       n=1  The text pattern is assumed to be "fromexpr" with  a  null
            "toexpr"; it is equivalent to the ed command
                      g/fromexpr/s///g
       n=2  The  first  text  pattern  is  "fromexpr",  the  second is
            "toexpr"; it is equivalent to the ed command
                      g/fromexpr/s//toexpr/g
       n>=3 The (n-1)th pattern is "fromexpr", the nth is "toexpr" and
            patterns 1...n-2 are used  to  determine  the  lines  upon
            which  to  perform  the substitution.  The default is that
            any  line  which  matches  any  one  of  the  n-2  leading
            expressions are eligible for substitution.  If the -a flag
            is  specified,  only  lines  which  match  all n-2 leading
            expressions in any order are eligible.  If the -x flag  is
            specified,   all  lines  which  don't  satisfy  the  above
            criteria are eligible. (See the writeup on find  for  more
            information.)  In particular, if n=3,
                      ch expr from to
            is equivalent to the ed command
                      g/expr/s/from/to/g
                      ch -x expr from to
            is equivalent to the ed command
                      x/expr/s/from/to/g

       The substitution string "toexpr" may be a string of replacement
       characters,  null  to  effect a deletion, or it may include the
       special "ditto" character "&" to put back the "fromexpr" string
       and  thus  effect  an  insertion.  It  may  also  contain   the
       expressions `$1' ... `$9', which cause the corresponding tagged
       pattern  in  the input to be inserted. If a deletion is desired
       with the multiple leading tag expressions,  a  "toexpr"  of  ""
       -i.e. quotes around an empty string may be used.
       
       A text pattern consists of the following elements:
       
       c      literal character 


                                 -1-                                  


CH                             04/07/78                             CH


       ?      any character except newline 
       %      beginning of line 
       $      end of line (null string before newline) 
       [...]  character class (any one of these characters) 
       [!...] negated character class (all but these characters) 
       {expr} tagged pattern (referenced by $1 ... $9)
       *      closure (zero or more occurrences of previous pattern) 
       +      anchored closure (one or more occurrences of previous pattern)
       @c     escaped character (e.g., @%, @[, @*) 
       
       Any  special  meaning  of  characters in a text pattern is lost
       when escaped, inside [...], or for:
       
       %         not at beginning 
       $         not at end 
       *         at beginning 
       +         at beginning
       
       A character class consists of zero or  more  of  the  following
       elements, surrounded by [ and ]:
       
       c         literal character 
       a-b       range of characters (digits, lower or upper case) 
       !         negated character class if at beginning 
       @c        escaped character (@! @- @@ @]) 
       
       Special meaning of characters in a character class is lost when
       escaped or for
       
       !         not at beginning 
       -         at beginning or end 
       
       An  escape  sequence  consists of the character @ followed by a
       single character:
       
       @f        formfeed
       @l        linefeed
       @n        newline 
       @r        return
       @t        tab 
       @OOO      the octal digit representation for an ASCII character
                 for example, @001 for the ASCII character SOH
       @c        c (including @@) 
       
       For a complete description, see "Software Tools" pages 135-154.
       Care should be taken when using the characters % $ [ ] ! * +  @
       and  any  shell  characters  in  the  text pattern. It is often
       necessary to enclose the entire substitution pattern in quotes.

FILES
       None


                                 -2-                                  


CH                             04/07/78                             CH


SEE ALSO
       The UNIX tool GRES
       The tools find and ed

DIAGNOSTICS
       An error message is printed if the pattern given is illegal.

AUTHORS
       'CH' was originally implemented on BKY by Debbie Scherrer  from
       Kernighan and Plauger's "Software Tools".   Major modifications
       were performed by Joe Sventek.

BUGS/DEFICIENCIES
       A minus sign(dash[-]) may not start an expression.







































                                 -3-                                  

