Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csplit(1)

ed(1)

umask(1)



  bfs(1)                              CLIX                              bfs(1)



  NAME

    bfs - Runs a big file scanner

  SYNOPSIS

    bfs [-] name

  DESCRIPTION

    The bfs command is a big file scanner.  The command is almost like ed
    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
    newline, per line (255 for 16-bit machines).  The bfs command is usually
    more efficient than ed 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 can be used to divide it into more manageable pieces for
    editing.

    Normally, the size of the file being scanned is displayed, as is the size
    of any file written with the w command.  The optional - suppresses
    displaying of sizes.  Input is prompted with * if P and a carriage return
    are typed, as in ed.  Prompting can be turned off again by entering
    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 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:
    only the letters a through z may be used, and all 26 marks are remembered.

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

    xffile 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)



  2/94 - Intergraph Corporation                                              1






  bfs(1)                              CLIX                              bfs(1)



           dictates otherwise.  If file is missing, output is diverted to
           stdout.  Note that each diversion causes truncation or creation of
           the file.

    :label This positions a label in a command file.  The label is terminated
           by newline, and blanks between the : 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 following 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, . 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 unconditional 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.
    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 reference a variable, put a % in front
    of the variable name.  For example, using the above assignments for
    variables 5 and 6:

    1,%5p
    1,%5
    %6

    will all display the first 100 lines.

    g/%5/p

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




  2                                              Intergraph Corporation - 2/94






  bfs(1)                              CLIX                              bfs(1)



    g/".*\%[cds]/p

    could be used to match and list lines containing printf of characters,
    decimal integers, or strings.

    Another feature of the xv command is that the first line of output from a
    CLIX 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 5, display it, and increment the
    variable 6 by one.  To escape the special meaning of ! as the first
    character of value, precede it with a \.

    xv7\!date

    stores the value !date into variable 7.

    These two commands will test the last saved return code from the execution
    of a CLIX 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.

    xv55
    :l
    /size/
    xv5!expr %5 - 1
    !if 0%5 != 0 exit 2
    xbn l
    xv45
    :l
    /size/
    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 argument, 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
           suppressed.

  EXAMPLES




  2/94 - Intergraph Corporation                                              3






  bfs(1)                              CLIX                              bfs(1)



    To scan a file:

    bfs /etc/hosts


  DIAGNOSTICS

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

  EXIT VALUES

    The bfs command exits with a value of 0 if successful.  If unsuccessful,
    bfs returns a value of 1.

  RELATED INFORMATION

    Commands: csplit(1), ed(1), umask(1)




































  4                                              Intergraph Corporation - 2/94




Typewritten Software • bear@typewritten.org • Edmonds, WA 98026