bfs - big file scanner


     /usr/bin/bfs [-] filename


     The bfs command is (almost) like ed(1)  except  that  it  is
     read-only  and  processes much larger files. Files can be up
     to 1024K bytes and 32K lines, with  up  to  512  characters,
     including  new-line, per line (255 for 16-bit machines). bfs
     is usually more efficient than ed(1) for  scanning  a  file,
     since  the file is not copied to a buffer. It is most useful
     for identifying sections of a large file where csplit(1) can
     be  used  to divide it into more manageable pieces for edit-

     Normally, the size of the file being scanned is printed,  as
     is  the size of any file written with the w (write) command.
     The optional  -  suppresses  printing  of  sizes.  Input  is
     prompted  with * if P and a carriage return are typed, as in
     ed(1). Prompting  can  be  turned  off  again  by  inputting
     another  P and carriage return. Note that messages are given
     in response to errors if prompting is turned on.

     All address expressions described under ed(1) are supported.
     In  addition, regular expressions may be surrounded with two
     symbols besides / and ?:

     >     indicates downward search without wrap-around, and

     <     indicates upward search without wrap-around.

     There is a slight difference in mark names;  that  is,  only
     the  letters  a  through z may be used, and all 26 marks are

  bfs Commands
     The e, g, v, k, p, q, w, =, !, and null commands operate  as
     described  under  ed(1).  Commands  such as ---, +++-, +++=,
     -12, and +4p are accepted. Note that  1,10p  and  1,10  will
     both  print   the first ten lines. The f command only prints
     the name of the file being scanned; there is no   remembered
     file  name.  The   w command is independent of output diver-
     sion, truncation, or crunching (see the xo, xt, and xc  com-
     mands,  below). The following additional commands are avail-

     xf file
           Further commands are taken from the named file.   When
           an  end-of-file  is  reached,  an  interrupt signal is
           received or an error occurs, reading resumes with  the
           file  containing the xf. The xf commands may be nested
           to a depth of 10.

     xn    List the marks currently in use (marks are set by  the
           k command).

     xo [file]
           Further  output  from  the  p  and  null  commands  is
           diverted  to  the  named file, which, if necessary, is
           created mode 666 (readable and writable by  everyone),
           unless your umask setting (see umask(1)) dictates oth-
           erwise. If file is missing, output is diverted to  the
           standard output. Note that each diversion causes trun-
           cation or creation of the file.

     : label
           This positions a label in a command file. The label is
           terminated  by  new-line,  and  blanks  between  the :
           (colon) and the start of the label are  ignored.  This
           command  may  also  be  used to insert comments into a
           command file, since labels need not be referenced.

     ( . , . )xb/regular expression/label
           A jump (either upward or downward) is made to label if
           the  command  succeeds. It fails under any of the fol-
           lowing conditions:

           1. Either address is not between 1 and $.

           2. The second address is less than the first.

           3. The regular expression does not match at least  one
              line  in  the  specified range, including the first
              and last lines.

     On success, . (dot) is set to the line matched and a jump is
     made  to  label.  This command is the only one that does not
     issue an error message on bad addresses, so it may  be  used
     to  test whether addresses are bad before other commands are
     executed. Note that the command, xb/^/ label, is an uncondi-
     tional jump.

           The xb command is allowed only  if  it  is  read  from
           someplace  other than a terminal. If it is read from a
           pipe, only a downward jump is possible.

     xt number
           Output from the p and null commands is  truncated  to,
           at most, number characters. The initial number is 255.

           The variable name is the specified digit following the
           xv.  The  commands  xv5100  or xv5 100 both assign the
           value  100 to the variable 5.  The  command  xv61,100p
           assigns  the value 1,100p to the variable 6. To refer-
           ence a variable, put a %  in  front  of  the  variable
           name.  For  example,  using  the above assignments for
           variables 5 and 6:


     will all print the first 100 lines.


     would globally search for the characters 100 and print  each
     line containing a match. To escape the special meaning of %,
     a \ must precede it.


     could be used to match and list %c, %d, or %s  formats  (for
     example,  "printf"-like  statements)  of characters, decimal
     integers, or strings. Another feature of the xv  command  is
     that the first line of output from a UNIX system command can
     be stored into a variable. The only requirement is that  the
     first character of value be an !. For example:

           .w junk
           xv5!cat junk
           !rm junk
           !echo "%5"
           xv6!expr %6 + 1

     would put the current line into variable 35, print  it,  and
     increment  the  variable  36  by  one. To escape the special
     meaning of ! as the first character  of  value,  precede  it
     with a \.


           stores the value !date into variable 7.

     xbz label

     xbn label
           These two commands will test  the  last  saved  return
           code  from  the  execution  of  a  UNIX system command
           (!command) or  nonzero  value,  respectively,  to  the
           specified  label.  The two examples below both  search
           for the next five lines containing the string size:

           Example 1:

                 : l
                 xv5!expr %5 - 1
                 !if 0%5 != 0 exit 2
                 xbn l

           Example 2:

                 : l
                 xv4!expr %4 - 1
                 !if 0%4 = 0 exit 2
                 xbz l

     xc [switch]
           If switch is 1, output from the p and null commands is
           crunched;  if switch is 0, it is not. Without an argu-
           ment, xc reverses switch. Initially, switch is set for
           no  crunching. Crunched output has strings of tabs and
           blanks  reduced  to  one   blank   and   blank   lines


     The following operand is supported:

           Any file up to 1024K bytes and 32K lines, with  up  to
           512  characters, including new-line, per line (255 for
           16-bit machines). filename  can  be  a  section  of  a
           larger  file  which has been divided into more manage-
           able sections for editing by the use of csplit(1).


     The following exit values are returned:

     0     Successful completion  without  any  file  or  command

     >0    An error occurred.


     See attributes(5) for descriptions of the  following  attri-

    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    | Availability                | SUNWesu                     |


     csplit(1), ed(1), umask(1), attributes(5)


     Message is ? for errors in commands, if prompting is  turned
     off.  Self-explanatory  error  messages  are  displayed when
     prompting is on.

Man(1) output converted with man2html