Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ bfs(1) — DG/UX 4.00

Media Vault

Software Library

Restoration Projects

Artifacts Sought



                                                                   bfs(1)



        _________________________________________________________________
        bfs                                                       Command
        big file scanner
        _________________________________________________________________


        SYNTAX

        bfs [ - ] name


        DESCRIPTION

        The bfs command is like ed(1), but 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.  Bfs 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(1) can divide it into more
        manageable pieces for editing.

        Normally, the size of the file being scanned is printed, as is
        the size of any file written with the w command.  The optional -
        suppresses printing of sizes.  Input is prompted with * if you
        type P and a newline as in ed.  Turn prompting off again by
        inputting another P and newline.  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.  For
        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 print the
        first ten lines.  The f command prints only the name of the file
        being scanned; there is no remembered file name.  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:

             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.




        DG/UX 4.00                                                 Page 1
               Licensed material--property of copyright holder(s)





                                                                   bfs(1)



             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.  If file is missing, output is diverted to the
                  standard output.  Note that each diversion truncates or
                  creates 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 also
                  inserts 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 if:
                          Either address is not between 1 and $.

                          The second address is less than the first, or

                          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.  If the command fails, the jump is not
                  made and the next statement is executed.  This command
                  is the only one that does not issue an error message on
                  bad addresses, so you can use it 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.

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

             xv[digit][spaces][value]
                  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



        DG/UX 4.00                                                 Page 2
               Licensed material--property of copyright holder(s)





                                                                   bfs(1)



                  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 print the first 100 lines.

                       g/%5/p

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

                       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 DG/UX system command can be
                  stored into a variable.  The only requirement is that
                  the first character of value be !.  For example:

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

                  would put the current line into variable 5, print 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.

             xbz label

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




        DG/UX 4.00                                                 Page 3
               Licensed material--property of copyright holder(s)





                                                                   bfs(1)



                       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.


        SEE ALSO

        csplit(1), ed(1).
        regcmp(3X) in the Programmer's Reference for the DG/UX System


        DIAGNOSTICS

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





















        DG/UX 4.00                                                 Page 4
               Licensed material--property of copyright holder(s)



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