Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
bfs(1)				 User Commands				bfs(1)

       bfs - big file scanner

       /usr/bin/bfs [-]	filename

       The  bfs	command	is (almost) like ed(1) except that 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 new-line, per line (255 for
       16-bit machines). bfs is	usually	more efficient than ed(1) 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	be used	to di-
       vide 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 (write) command.	The  optional  -  sup-
       presses printing	of sizes. Input	is prompted with * if P	and a carriage
       return are typed, as in ed(1). Prompting	can be turned off again	by in-
       putting	another	P and carriage return. Note that messages are given in
       response	to errors if prompting is turned on.

       All address expressions described under ed(1) are supported.  In	 addi-
       tion,  regular expressions may be surrounded with two symbols besides /
       and ?:

       >	indicates downward search without wrap-around, and

       <	indicates upward search	without	wrap-around.

       There is	a slight difference in mark names; that	is, only the letters a
       through z may be	used, and all 26 marks are remembered.

   bfs Commands
       The  e,	g, v, k, p, q, w, =, !,	and null commands operate as described
       under ed(1). Commands such as ---, +++-,	+++=, -12,  and	 +4p  are  ac-
       cepted.	Note that 1,10p	and 1,10 will both print  the first ten	lines.
       The f command only prints the name of the file being scanned; there  is
       no   remembered	file name. The	w command is independent of output di-
       version,	truncation, or crunching (see the xo, xt, and xc commands, be-
       low). 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  oc-
	   curs,  reading resumes with the file	containing the xf. The xf com-
	   mands may be	nested to a depth of 10.


	   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 666 (readable and
	   writable by everyone), unless your  umask  setting  (see  umask(1))
	   dictates  otherwise.	 If file is missing, output is diverted	to the
	   standard output. Note that each diversion causes truncation or cre-
	   ation of the	file.

       : label

	   This	 positions  a label in a command file. The label is terminated
	   by new-line,	and blanks between the : (colon) and the start of  the
	   label are ignored. This command may also be used to insert 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 under any	of the following conditions:

	       1.  Either address is not between 1 and $.

	       2.  The second address is less than the first.

	       3.  The	regular	expression does	not match at least one line in
		   the specified range,	including the first and	last lines.

	   On success, . (dot) is set to the line matched and a	jump  is  made
	   to label. This command is the only one that does not	issue an error
	   message on bad addresses, so	it may be used	to  test  whether  ad-
	   dresses  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

       xt number

	   Output from the p and null commands is truncated to,	at most,  num-
	   ber characters. The initial number is 255.


	   The variable	name is	the specified digit following the xv. The com-
	   mands 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:


	   will	all print the first 100	lines.


	   would  globally  search  for	the characters 100 and print each line
	   containing a	match. To escape the special meaning of	%,  a  \  must
	   precede it.


	   could be used to match and list %c, %d, or %s formats (for example,
	   "printf"-like  statements)  of  characters,	decimal	 integers,  or
	   strings.  Another  feature of the xv	command	is that	the first line
	   of output from a UNIX system	command	can be stored into a variable.
	   The	only requirement is that the first character of	value be an !.
	   For example:

	   .w junk
	   xv5!cat junk
	   !rm junk
	   !echo "%5"
	   xv6!expr %6 + 1

	   would put the current line into variable 35,	print it,  and	incre-
	   ment	 the variable 36 by one. To escape the special meaning of ! as
	   the first character of value, precede it with a \.


	   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 UNIX system command (!command) or nonzero value, re-
	   spectively, to the specified	label. The  two	 examples  below  both
	   search for the next five lines containing the string	size:

	   Example 1:
			   : l
			   xv5!expr %5 - 1
			   !if 0%5 != 0	exit 2
			   xbn l

	   Example 2:
			   : l
			   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

       The following operand is	supported:

       filename	       Any  file  up  to 1024K bytes and 32K lines, with up to
		       512 characters, including new-line, per line  (255  for
		       16-bit machines). filename can be a section of a	larger
		       file which has been divided into	more  manageable  sec-
		       tions for editing by the	use of csplit(1).

       The following exit values are returned:

       0	Successful completion without any file or command errors.

       >0	An error occurred.

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Availability		     |SUNWesu			   |

       csplit(1), ed(1), umask(1), attributes(5)

       Message	is ? for errors	in commands, if	prompting is turned off. Self-
       explanatory error messages are displayed	when prompting is on.

SunOS 5.10			  20 May 1996				bfs(1)


Want to link to this manual page? Use this URL:

home | help