Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ bfs(1) — AIX/RT 2.2.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csplit

ed

bfs

PURPOSE

     Scans files.

SYNOPSIS
     bfs [ - ] name


DESCRIPTION

     The bfs  command reads a file  but does not do  any proc-
     essing of it, allowing you to scan but not edit it.

     The bfs command  is basically a read-only  version of the
     ed command, except  it can process much  larger files and
     it has  some additional subcommands.  Input  files can be
     up to 32K lines long, with up to 255 characters per line.
     bfs  is usually  more efficient  than ed  for scanning  a
     file, because the file is not  copied to a buffer.  It is
     most  useful for  identifying  sections of  a large  file
     where you  can use the  csplit command to divide  it into
     more manageable pieces for editing.

     If you  enter the P  subcommand, bfs prompts you  with an
     "*" (asterisk).  You can turn off prompting by entering a
     second P.  bfs displays  error messages when prompting is
     turned on.

       Forward and Backward Searches

     The  bfs command  supports  all  the address  expressions
     described under "ed."  In  addition, you can instruct bfs
     to search forward  or backward through the  file, with or
     without  wrap-around.  If  you specify  a forward  search
     with wrap-around, bfs continues searching from the begin-
     ning of  the file after it  reaches the end of  the file.
     If  you specify  a backward  search with  wrap-around, it
     continues searching  backwards from  the end of  the file
     after it  reaches the beginning.  The  symbols for speci-
     fying the four types of search are as follows:

     /pattern/  Searches  forward  with  wrap-around  for  the
                pattern.
     ?pattern?  Searches  backward  with wrap-around  for  the
                pattern.
     >pattern>  Searches forward  without wrap-around  for the
                pattern.
     <pattern<  Searches backward without  wrap-around for the
                pattern.

     The pattern matching routine of bfs differs somewhat from
     the one used by ed  and includes additional features (see
     the regcmp  subroutine in AIX Operating  System Technical

     Reference).  There  is also  a slight difference  in mark
     names:  only lowercase  letters a through z  may be used,
     and all 26 marks are remembered.

FLAGS

     -  Suppresses the  display of file sizes.   Normally, bfs
        displays the size in bytes of the file being scanned.

SUBCOMMANDS

     The e, g,  v, k, n, p,  q, w, = , !  and null subcommands
     operate as explained under "ed."  Subcommands such as --,
     +++-, +++=, -12, and +4p are accepted.  Note that "1,10p"
     and "1,10" both display the  first ten lines.  The f sub-
     command displays only the name of the file being scanned;
     there are no remembered file  names.  The w subcommand is
     independent  of  output  diversion, truncation,  or  com-
     pression (see the  xo, xt, and xc subcommands  on page ).
     Compressed output has strings  of tabs and blanks reduced
     to one blank and blank lines suppressed.

     The following additional subcommands are available:

     xf  file            Reads bfs subcommands  from the file.
                         When bfs  reaches the end of  file or
                         receives an interrupt signal or if an
                         error  occurs,  bfs resumes  scanning
                         the file that contains the xf subcom-
                         mand.   These xf  subcommands may  be
                         nested to a depth of 10.
     xo  [file]          Sends further  output from the  p and
                         null subcommands  to the  named file,
                         which is created  with read and write
                         permission granted to  all users.  If
                         you do not  specify a file parameter,
                         bfs writes to  standard output.  Note
                         that  each  redirection   to  a  file
                         creates the  specified file, deleting
                         an existing file if necessary.
     :label              Positions  a  label in  a  subcommand
                         file.  The label is ended with a new-
                         line character.  Blanks between the :
                         (colon)  and the  start of  the label
                         are ignored.  This  subcommand may be
                         used to  insert comments into  a sub-
                         command file,  since labels  need not
                         be referenced.
     [addr1[,addr2]]xb/pattern/label
                         Sets  the current  line  to the  line
                         containing pattern and jumps to label
                         in  the   current  command   file  if
                         pattern is matched  within the desig-
                         nated range of lines.  The jump fails
                         under  any  of the  following  condi-
                         tions:
                         o   Either  addr1  or  addr2  is  not
                             between the first  and last lines
                             of the file.
                         o   addr2 is less than addr1.

                         o   The  pattern  does not  match  at
                             least one  line in  the specified
                             range,  including  the first  and
                             last lines.

                         This subcommand 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 subcommands are run.  Note that
                         the subcommand:

                           xb/^/label

                         is an unconditional jump.

                         The xb subcommand  is allowed only if
                         it is read from some place other than
                         a work station.  If it is read from a
                         pipe,  only a  downward jump  is pos-
                         sible.
     xt  number          Truncates output from  the p and null
                         subcommands  to   number  characters.
                         The default number is 255.
     xv[digit]  [value]  Assigns  the specified  value to  the
                         variable named  digit (0  through 9).
                         You  can  put   one  or  more  spaces
                         between   digit   and   value.    For
                         example:

                           xv5  100
                           xv6  1,100p

                         assigns the value  "100" to the vari-
                         able  "5" and  the value  "1,100p" to
                         the variable "6".

                         To  reference a  variable, put  a "%"
                         (percent sign) in  front of the vari-
                         able   name.   Given   the  preceding
                         assignments  for  variables  "5"  and
                         "6", the following three subcommands:

                           1,%5p
                           1,%5
                           %6

                         each display the first 100 lines of a
                         file.

                         To escape the special meaning of "%",
                         precede it with a \ (backslash).  For
                         example:

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

                         matches  and  lists lines  containing
                         printf  variables   ("%c",  "%d",  or
                         "%s").

                         You can also use the xv subcommand to
                         assign  the  first  line  of  command
                         output  as the  value of  a variable.
                         To do this,  make the first character
                         of  value an  ! (exclamation  point),
                         followed  by the  command name.   For
                         example:

                           xv5 !cat junk

                         stores  the first  line  of the  file
                         "junk" in the variable "5".

                         To escape the special meaning of ! as
                         the first character of value, precede
                         it   with  a   \  (backslash).    For
                         example:

                           xv7 \!date

                         stores the value "!date" in the vari-
                         able "7".
     xbz  label          Tests the last  saved exit value from
                         a shell command and jumps to label in
                         the current command file if the value
                         is zero.
     xbn  label          Tests the last  saved exit value from
                         a shell command and jumps to label in
                         the current command file if the value
                         is not zero.
     xc  [switch]        Turns  compressed output  mode on  or
                         off.   (Compressed  output mode  sup-
                         presses blank lines and replaces mul-
                         tiple blanks  and tabs with  a single
                         space.)

                         If switch  is "1", output from  the p
                         and  null subcommands  is compressed;
                         if switch  is "0" it is  not.  If you
                         do  not specify  switch, the  current
                         value of switch reverses.  Initially,
                         switch is set to 0.

RELATED INFORMATION

     The following commands:  "csplit" and "ed."

     The regcmp  subroutine in AIX Operating  System Technical
     Reference.

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