Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ bfs(1) — AIX PS/2 1.2.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csplit

ed, red



BFS(1,C)                    AIX Commands Reference                     BFS(1,C)



-------------------------------------------------------------------------------
bfs



PURPOSE

Scans files.

SYNTAX


       +-----+
bfs ---|     |-- file --|
       +- - -+


Note:  This command does not have MBCS support.

DESCRIPTION

The bfs command reads a file but does not allow any changes to be made to it;
that is, it allows you to scan the file but not edit it.

The bfs command is basically a read-only version of the ed command, except that
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.  If you
have selected a language (through the LANG environment variable) that supports
multibyte characters, the 255-character limit can be reduced by as much as 50%,
depending on the character code set being used.

The bfs command is usually more efficient than the ed command for scanning a
file, because the file is not copied to a buffer.  The bfs command is most
useful for identifying sections of a large file where you can use the csplit
command to divide it into more manageable parts for editing.

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

Forward and Backward Searches

The bfs command supports all the address expressions described under "ed, red."
In addition, you can instruct the bfs command to search forward or backward
through the file, with or without wraparound.  If you specify a forward search
with wraparound, the bfs command starts its search from the beginning of the
file and after it reaches the end of the file it "wrapsaround" and continues
its search from the beginning.  If you specify a backward search with
wraparound, it continues searching backwards from the end of the file after it
reaches the beginning.  The symbols for specifying the four types of search are
as follows:




Processed November 8, 1990         BFS(1,C)                                   1





BFS(1,C)                    AIX Commands Reference                     BFS(1,C)



/pattern/     Searches forward with wraparound for the pattern.

?pattern?     Searches backward with wraparound for the pattern.

>pattern>     Searches forward without wraparound for the pattern.

<pattern<     Searches backward without wraparound for the pattern.

The pattern can contain Japanese characters.

The pattern matching routine of the bfs command differs somewhat from the one
used by the ed command 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 the size of the file.  Normally, the bfs command
   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, red." Subcommands such as --, +++-, +++=, -12, and +4p are accepted.
Note that "1,10p" and "1,10" both display the first ten lines.  The f
subcommand 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 compression (see the xo, xt, and xc subcommands on page
        2).  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 the bfs command
                   reaches the end of file or receives an interrupt signal or
                   if an error occurs, the bfs command resumes scanning the
                   file that contains the xf subcommand.  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, the bfs command writes to standard output.  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 subcommand file, since labels
                   need not be referenced.



Processed November 8, 1990         BFS(1,C)                                   2





BFS(1,C)                    AIX Commands Reference                     BFS(1,C)




[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 designated range of lines.  The jump
                   fails under any of the following conditions:

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

                     xb/^/label

                   is an unconditional jump.

                   The xb subcommand is allowed only if it is read from some
                   place other than a workstation.  If it is read from a pipe,
                   only a downward jump is possible.

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 variable "5" and the value
                   "1,100p" to the variable "6".

                   To reference a variable, put a "%" (percent sign) in front
                   of the variable 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:




Processed November 8, 1990         BFS(1,C)                                   3





BFS(1,C)                    AIX Commands Reference                     BFS(1,C)



                     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 variable "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 suppresses blank lines and replaces multiple blanks and
                   tabs with a single space.)

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

RELATED INFORMATION

See the following commands:  "csplit" and "ed, red."

See the regcmp subroutine in AIX Operating System Technical Reference.











Processed November 8, 1990         BFS(1,C)                                   4



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