Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ bfs(1) — DG/UX 4.30

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csplit(1)

ed(1)

regcmp(3X)



     bfs(1)                     DG/UX 4.30                      bfs(1)



     NAME
          bfs - big file scanner

     SYNOPSIS
          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.

          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



     Licensed material--property of copyright holder(s)         Page 1





     bfs(1)                     DG/UX 4.30                      bfs(1)



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



     Licensed material--property of copyright holder(s)         Page 2





     bfs(1)                     DG/UX 4.30                      bfs(1)



               %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.

               xv55
               : l
               /size/
               xv5!expr %5 - 1
               !if 0%5 != 0 exit 2

               xbn l
               xv45



     Licensed material--property of copyright holder(s)         Page 3





     bfs(1)                     DG/UX 4.30                      bfs(1)



               : 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.

































     Licensed material--property of copyright holder(s)         Page 4



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