ファイルの検索
| FindList["file","text"] | ファイルにおいて指定のテキストを含むすべての行のリスト |
| FindList["file","text",n] | ファイルにおいて指定のテキストを含む n 個の行のリスト |
| FindList["file",{"text1","text2",...}] | ファイルにおいてテキスト のいずれかを含む行のリスト |
特定のテキストを含む行の検索
テキスト

を含むすべての行をリストとして返す.
| Out[2]= |  |
テキスト

はファイルのどこにも見出されない.
| Out[3]= |  |
デフォルトで,FindListはファイルの各行を順にスキャンし,指定したテキストを含む行を返す.しかし,一般に,FindListがレコードを順にスキャンし,指定のテキストを含むそれぞれのレコードを返すようにすることもできる.ReadListと同様に,オプションRecordSeparatorsによってレコードセパレータを指定することができる.RecordSeparatorsにペアのリストを与えることによって,左と右のセパレータを別々に指定することもできる.この場合,FindListは左右のセパレータに囲まれたテキストのみを検索するようにできる.
ピリオドで区切られた「文」で,
Andを含むものを探し出す.
| Out[4]= |  |
FindListのオプション
ファイルの各行の行頭に現れる

のみを検索する.
| Out[5]= |  |
一般に,FindListはレコードの任意の位置に現れるテキストを探し出す.しかし,オプションWordSearch->Trueを設定すると,FindListは指定のテキストがレコードの中の独立したワードとして現れるものだけを検索する.オプションWordSeparatorsはワードのセパレータを指定する.
ファイルにテキスト

は現れるが,独立したワードではない.その結果,
FindListは何も探し出さない.
| Out[6]= |  |
| FindList[{"file1","file2",...},"text"] | テキストを のいずれかにあれば探し出す |
複数のファイルの検索
テキスト

をファイル

を対象に2回検索する.
| Out[7]= |  |
FileNames等の関数が返したファイル名のリストにFindListを適用すると便利なことがある.
| FindList["!command",...] | 外部コマンドを実行し,その出力に含まれるテキストを探し出す |
外部プログラムの出力中のテキストの検索
外部のUnixコマンド

をテキスト型のインターフェースで走らせる.
| Out[8]= |  |
| Out[9]= |  |
テキストの検索手順
FindListは,指定するテキストを特定のファイルに対して一括検索する.しかし,ときには,テキストを1つずつ順に探し出したいこともある.これはFindを使って実現される.
Findを使うには,まずOpenReadによって明示的に入力ストリームを開かなければならない.その後は,Findをこのストリームに対して実行するたびに指定のテキストが探され,カレントポイントをテキストが見出されたレコードの直後に移す.その結果,Findを数回繰り返して順にテキストを検索することができる.

からの入力ストリームを開く.
| Out[10]= |  |
| Out[11]= |  |
| Out[12]= |  |
| Out[13]= |  |
一度入力ストリームを開いたら,Find,Skip,Readを交互に使うことができる.FindListまたはReadListを実行すると,Mathematica は即座に入力ストリームの最後まで読み込む.
| Out[14]= |  |

を含む最初の行を見出し,カレントポイントを次の行の先頭に移す.
| Out[15]= |  |
| Out[16]= |  |
Mathematica は

を残りのテキスト中に見出し,それを含むレコードを出力として返す.
| Out[18]= |  |
| Out[19]= |  |
ストリームにおけるカレントポイントの設定
Read,Skip,Find等の関数は,ストリームに先頭から順に作用する.いずれかの関数が実行されるたびにストリームにおけるカレントポイントが移動される.
ストリームにおけるカレントポイントがどこにあるかを知りたいこと,またこれを再設定したいことがある.ほとんどのコンピュータシステムでは,StreamPositionはカレントポイントの位置を,ストリームの先頭からの位置に対応するバイト数を表す整数で返す.
| Out[20]= |  |
| Out[21]= |  |
| Out[22]= |  |
| Out[23]= |  |
| Out[24]= |  |
| Out[25]= |  |
| Out[26]= |  |