Go to main content
マニュアルページ セク ション 1: ユー ザーコマンド

印刷ビューの終了

更新: 2016年12月6日
 
 

bfs(1)

名前

bfs - 大型ファイル用のスキャナ

形式

/usr/bin/bfs [-] filename

説明

bfs コマンドは、ほとんど ed(1) と同じですが、読み取り専用で、より大きなファイルを処理する点が異なります。ファイルは最大 1024K バイト、32K 行で、1 行あたりに復帰改行を含めて最大 512 文字 (16 ビットマシンの場合は 255 文字) を含めることができます。bfs ではファイルがバッファにコピーされないため、ファイルの走査は一般に ed(1) よりも効率的です。csplit(1) を使用して、大きなファイルを編集のために扱いやすい大きさのいくつかのファイルに分割できる場合、bfs は、大きなファイルの各セクションを識別するのに役立ちます。

通常、w (write) コマンドで書き込んだファイルのサイズが出力されるのと同様に、走査しているファイルのサイズが出力されます。オプションの - は、サイズの出力を抑制します。P とキャリッジリターンを入力すると、ed(1) の場合と同様に入力を求めるプロンプトとして * が出力されます。プロンプトは、再度 P とキャリッジリターンを入力するとオフにできます。メッセージは、プロンプトがオンになっている場合には、エラーに対してメッセージが出力されることに注意してください。

ed(1) で説明されているアドレス表現式はすべてサポートされています。また、正規表現を、/? 以外の 2 つの記号で囲むことができます。

>

折り返しのない下方検索を示します。

<

折り返しのない上方検索を示します。

マーク名には多少の違いがあります。つまり、a - z の文字だけが使用可能であり、26 のマークすべてが記憶されます。

bfs コマンド

egvkpqw=!、および NULL の各コマンドは、ed(1) の説明どおりに動作します。---+++-+++=-12+4p などのコマンドは受け入れられます。1、10p、および 1,10 は、いずれも最初の 10 行を出力します。f コマンドは、走査中のファイルの名前だけを出力します。ファイル名の記憶機能はありません。w コマンドは、出力先の変更、切り捨て、または圧縮機能には影響されません (以下の xoxt、および xc の各コマンドを参照)。次の追加コマンドを使用できます。

xf file

指定した file からコマンドを取り出します。ファイルの終わり、割り込みシグナルの受信、またはエラーの発生により、コマンドの読み取りは、xf を含むファイルに戻ります。xf コマンドは、10 の深さまでネストすることができます。

xn

現在使用中のマークをリストします (マークは、k コマンドで設定されます)。

xo [file]

p および NULL コマンドからの出力を、指定した file に送ります。このファイルは、umask の設定 (umask(1) を参照) で別の指定がされているのでなければ、必要に応じてモード 666 (だれでも読み書きが可能) で作成されます。file を指定しないと、出力は標準出力に送られます。出力先の変更を行うたびに、ファイルの切り捨てや作成が行われることに注意してください。

: label

コマンドファイル内に label 定義します。label は復帰改行で終了し、: (コロン) と label の先頭の間にあるブランクは無視されます。ラベルは参照されなくてもよいので、このコマンドは、コマンドファイル内に注釈を挿入するためにも使用できます。

( ., .)xb/regular expression/label

このコマンドが正常に実行されると、label への (上方または下方) ジャンプが行われます。次の条件のいずれかが成立すると、ジャンプは失敗します。

  1. アドレスが 1$ の間にない。

  2. 2 番目のアドレスが 1 番目のアドレスよりも小さい。

  3. 最初と最後の行を含む指定した範囲内に、正規表現と一致する行がない。

正常終了すると、一致した行に . (ドット) が設定されて、label へのジャンプが行われます。このコマンドは、アドレスが間違っているときにもエラーメッセージを出さない唯一のコマンドですので、他のコマンドを実行する前にアドレスが間違っていないかを検査するために使用できます。コマンド、xb/^/ label は無条件ジャンプであることに注意してください。

xb コマンドは、端末以外から読み取られた場合にのみ使用できます。パイプから読み取られた場合は、下方ジャンプだけしか実行できません。

xt number

p および NULL コマンドからの出力を、number で指定した文字数まで切り捨てます。初期値は 255 です。

xv [digit] [spaces] [value]

xv に続いて指定された digit が変数名になります。コマンド xv5100xv5 100 は、どちらも値 100 を変数 5 に割り当てます。コマンド xv61、100p は、値 1、100p を変数 6 に割り当てます。変数を参照するには、変数名の前に % を付けます。たとえば次の例は、前述の割り当てを変数 56 に使用します。

1,%5p
1,%5
%6

すべてで、最初の 100 行が出力されます。

g/%5/p

前述のコマンドは、文字 100 をグローバルに検索して、一致した各行を出力します。% の特殊な意味をエスケープするには、その前に \ を付ける必要があります。

g/".*\%[cds]/p

文字、10 進整数、または文字列の %c、%d、または %s 形式 (たとえば、printf のような文) を照合してリストするために使用できます。xv コマンドの機能には、このほかに UNIX コマンドの出力の最初の行を変数に格納できるというものがあります。そのための条件は、value の最初の文字が ! でなければならないということだけです。例:

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

前述のコマンドは、現在の行を変数 35 に入れ、それを出力して、変数 36 を 1 増分します。value の最初の文字としての ! の特殊な意味をエスケープするには、その前に \ を付けます。

xv7\!date

前述のコマンドは、値 !date を変数 7 に格納します。

xbz label
xbn label

これらの 2 つのコマンドは、UNIX コマンド (! コマンド) の実行で最後に保存されたリターンコード、または 0 以外の値をそれぞれテストして、指定された label にジャンプします。次の 2 つの例はいずれも、文字列 size を含む次の 5 行を検索するものです。

例 1:
xv55
: l
/size/
xv5!expr %5 − 1
!if 0%5 != 0 exit 2
xbn l
例 2:
xv45
: l
/size/
xv4!expr %4 − 1
!if 0%4 = 0 exit 2
xbz l
xc [switch]

switch1 の場合、p および NULL コマンドからの出力は圧縮されます。switch0 の場合は圧縮されません。引数がない場合、xcswitch を反転します。switch は、最初は圧縮を行わないように設定されています。圧縮された出力では、タブとブランクからなる文字列は 1 つのブランクに置き換えられ、空白行は出力されません。

オペランド

次のオペランドを指定できます。

filename

最大 1024K バイト、32K 行、1 行あたりに復帰改行を含め最大 512 文字 (16 ビットマシンの場合は 255 文字) を収納するすべてのファイル。filename には、csplit(1) によって編集用に扱いやすい大きさに分割された大きなファイルの 1 つのセクションを指定することができます。

終了ステータス

次の終了ステータスが返されます。

0

ファイルにもコマンドにもエラーはなく、正常終了しました。

>0

エラーが発生した。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os

関連項目

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

診断

プロンプトがオフの場合、コマンドにエラーがあると ? だけが表示されます。プロンプトがオン場合は、詳しいエラーメッセージが表示されます。

bfs ユーティリティーは、Oracle Solaris の将来のリリースで削除される可能性があります。