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