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
       divide 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
       inputting  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
       accepted.  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 diversion, truncation, or	crunching (see the xo, xt, and xc com-
       mands, below). 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
	     occurs,  reading  resumes with the	file containing	the xf.	The xf
	     commands may be nested to a depth of 10.

       xn    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 creation 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	refer-

       ( . , . )xb/regular expression/label
	     A jump (either upward or downward)	is made	to label if  the  com-
	     mand 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 mes-
       sage on bad addresses, so it may	be used	to test	whether	addresses  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	possible.

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

	     The  variable  name  is the specified digit following the xv. The
	     commands 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 vari-
	     ables 5 and 6:


       will all	print the first	100 lines.


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


       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 require-
       ment 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  increment
       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,
	     respectively, 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 out-
	     put has strings of	tabs and blanks	reduced	to one blank and blank
	     lines suppressed.

       The following operand is	supported:

	     Any  file up to 1024K bytes and 32K lines,	with up	to 512 charac-
	     ters, 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  sections  for  editing  by	 the  use   of

       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.9			  20 May 1996				bfs(1)


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

home | help