bfs - Scans files
bfs [-] file...
The bfs command is a read-only line editor typically used
to scan files.
Suppresses the display of file sizes. Normally, bfs displays
the size in bytes of the file being scanned.
The bfs command is similar to the ed command, but has some
additional subcommands and the ability to process much
larger files.
Input files can be up to 32K lines long, with up to 512
characters per line. The command bfs is usually more efficient
than ed for scanning a file because the file is not
copied to a buffer. It is useful for identifying appropriate
lines at which to use the csplit command when
dividing a large file into more manageable pieces for
editing.
If you enter the P subcommand, bfs prompts you with *
(asterisk). You can turn off prompting by entering a P
again. The command bfs displays error messages only when
prompting is turned on.
Pattern Searches [Toc] [Back]
The bfs command supports all the address expressions
described in ed(1). Regular expressions are covered in
detail in grep(1). In addition, you can instruct bfs to
search forward or backward through the file with or without
wraparound. If you specify a forward search with
wraparound, bfs continues searching from the beginning of
the file after it reaches the end of the file. If you
specify a backward search with wraparound, it continues
searching backward from the end of the file after it
reaches the beginning. A search without wraparound stops
at the beginning or end of the file.
Specify the four types of searches as follows: Searches
forward with wraparound for pattern. Searches backward
with wraparound for pattern. Searches forward without
wraparound for pattern. Searches backward without
wraparound for pattern.
The pattern matching routine of bfs differs somewhat from
the one used by ed and includes additional features.
Only lowercase letters a through z can be used, and all 26
marks are remembered. See ed(1) for information on mark
names.
The e, g, v, k, n, p, q, w, = , !, and null subcommands
operate the same as for ed.
Subcommands such as --, +++-, +++=, -12, and +4p are
accepted. Note that 1,10p and 1,10 both display the first
10 lines.
The f subcommand displays only the name of the file being
scanned; there are no remembered filenames. The w subcommand
is independent of output diversion, truncation, or
compression. See the xo, xt, and xc subcommands that follow.
The following additional subcommands are available: Reads
bfs subcommands from file. When bfs reaches the end of
file or receives an INT signal or if an error occurs, bfs
resumes scanning the file that contains the xf subcommand.
The xf subcommands can be nested to a depth of 10. 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,
bfs writes to standard output. Note that each redirection
to a file creates the specified file, deleting an existing
file if necessary. Positions a label in a subcommand
file. The label is ended with a newline character.
Spaces between the : (colon) and the start of the label
are ignored. This subcommand can be used to insert comments
into a subcommand file, since labels need not be
referenced. 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:
Either address1 or address2 is not between the first and
last lines of the file. address2 is less than address1.
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 can be
used before other subcommands are run to test
whether addresses are bad. Note that the following
subcommand is an unconditional jump: xb/^/label
The xb subcommand is allowed only if it is read
from a file or a pipe. If it is read from a pipe,
only a downward jump is possible. Truncates output
from the p and null subcommands to number characters.
The default number is 255. Assigns the
specified value to the variable named number (0 to
9). You can put one or more spaces between number
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 each display the first 100 lines
of a file: 1,%5p 1,%5 %6
To escape the special meaning of %, precede it with
a \ (backslash). 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, the following command
line stores the first line of the file junk in the
variable 5: xv5 !cat junk
To escape the special meaning of ! as the first
character of value, precede it with a \ (backslash).
For example, the following command line
stores the value !date in the variable 7: xv7
\!date Tests the last saved exit value from a shell
command and jumps to label in the current command
file if the value is 0 (zero). Tests the last
saved exit value from a shell command and jumps to
label in the current command file if the value is
not 0 (zero). Turns compressed output mode on or
off. (Compressed output mode suppresses empty
lines and replaces multiple spaces 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.
Commands: csplit(1), ed(1), grep(1)
Functions: regexp(3)
bfs(1)
[ Back ] |