プロセルピナ
Top Internet
Mail
Private
Proxy
Capture
Device
Download Config
and
Words
Online
Help
Online
Home
[BACK]
Top > Proserpine Macro > Commands > file findLine

 
 file findLineコマンド
Macro Top | Variables | Commands  


 

ファイルから特定の文字列を含む行を取得


file findLine: (Parameters)

【Parameters】
  dir= string, ファイルパス
  file= string, ファイル名
  encode= string, ファイルエンコード (Optional)
  keyw.str= string, 検索する文字列を含む行
  cmp.length= int, 検出したと判断する文字列長
  expand= string, expand表記の場合の展開を指定 (Optional)
  igC flag, 大文字小文字を無視して比較
  keyw.del_chars= string, keyw.str=で指定した文字列に対し、比較から除外する文字の集合
  src.del_chars= string, ファイル各行の文字列に対し、比較から除外する文字の集合
  O:str= string, 検出した行
  O:lines= int, (Optional)
  O:result= string, 処理結果

ファイルは dir=file= で指定します。
フルパスで指定する場合は file= だけで指定します。
dir= と file= のパラメータによるファイルの指定

指定されたテキストファイルの各行をチェックし、 keyw.str=で指定した文字列に含まれる、cmp.length=で指定した長さの文字列が含まれる行を取得します。
例えば、パラメータで、
  keyw.str="あいうえお"
  cmp.length=3
と指定した場合、ファイル各行のうち、次の文字列のいずれか が含まれる行が、 O:str= で指定した文字列変数に取得されます。
  あいう
  いうえ
  うえお

keyw.str= で指定した文字列を完全に含む行を取得したい場合は、cmp.length= には keyw.str= で指定した文字列の長さ を指定します。
例えば、
  keyw.str="あいうえお"
  cmp.length=5
のように指定します。

入力ファイルのエンコードは encode= で指定します。例えば、 encode="Shift_JIS" のように記述します。 encode=指定を省略した場合、入力ファイルの先頭行にエンコードタイプが記述されているものとして扱います。 記述が無かった場合(つまり、先頭行をエンコード指定行として解釈できなかった場合)は、 デフォルトの UTF-8 でデコードします。

encode= を指定したときは、ファイルにエンコード指定行が無いものとして扱います。 つまり、ファイルの全行が、ランダム選択の対象です。
encode= を指定しなかったときは、ファイル先頭行をエンコード指定行として扱います。 エンコード指定行はランダム選択の対象外です。

delete を指定したときはファイルの行数が取得した分だけ減少します (元ファイルが編集されます)。
ファイルに残った行数を取得するには、O:count= で数値変数を指定します。

ランダム選択された文字列は、O:str= で指定した文字列変数に設定されます。
複数行ある場合は、改行(CR,LF)区切りになります。

ランダム選択から除外したい行は、特定の 文字(または記号) を行内に含ませておき、その文字を exceptional_chars=パラメータ で指定します。
exceptional_chars= には 文字または文字の集合 を指定します(つまり文字列で指定)。
例えば、記号 @ または ? を含む行を選択しないようにする場合は、
  exceptional_chars="@?"
と指定します。

 

expandパラメータ


expand= のパラメータは、ファイル内の文字列が expand表記 されている場合に指定します。
指定は、開始文字、区切り文字、終了文字の3文字で行います。
たとえば、ファイルから取得した行が
  {AAA|BBB|CCC} Z {DD|EE}
の場合に、expand="{|}" が指定されていると、行は、
  AAA Z DD
  BBB Z DD
  CCC Z DD
  AAA Z EE
  BBB Z EE
  CCC Z EE
の6行に展開されます。
どれかの行が keyw.str= で指定した文字列に一致すると、この行は一致と判断されます。 たとえば、
  keyw.str="B Z E"
は上記のうち5番目の展開例に一致するので、このファイルから取得した行は一致と判断されます。

O:str= で指定した文字列変数に設定されるのは、常に先頭要素を使用した展開になります。
上記例では、
  AAA Z DD
が設定されます。

使用例としては、「春のあめ」の文字列で「春の雨」のある行を検索したいときなどがあります (表記ゆらぎの収束)。
  {春|はる|ハル}の{雨|あめ|アメ}と書いて春雨
と表記してあれば、「春のあめ」でも「ハルのアメ」でも、「春の雨と書いて春雨」の行を取得できます。

 

del_charsパラメータ


keyw.del_chars= で指定した文字は、検索文字列から除外されます。
たとえば、
  keyw.str="あ!い?う!え?お"
  cmp.length=3
  keyw.del_chars="!?"
であれば、ファイル各行のうち、次の文字列のいずれか が含まれる行が、 O:str= で指定した文字列変数に取得されます。
  あいう
  いうえ
  うえお
つまり、keyw.str="あいうえお" と指定したのと同じです。

src.del_chars= で指定した文字は、検索される文字列から除外されます。
たとえば、ファイルから「春の小川は、さらさら行くよ。岸のすみれや、れんげの花に。」という行を取得したい場合で、 検索に「小川はさらさら」という文字列を使用した場合でも取得できるようにするには、
  src.del_chars="、"
を指定します。 この場合でも、O:str= で指定した文字列変数に設定されるのは、 「春の小川は、さらさら行くよ。岸のすみれや、れんげの花に。」 という'、'の文字を含んだものになります。

 

コード例


次の例は、デスクトップにファイル Sample.txt を作成し、文字列
  なんか「お川はサラ!サラ!行く」みたいな歌詞
と9文字以上一致する行を探して、その行を文字列変数 str[10] に設定するものです。



【コピペで確認】 上記のサンプルコードは メモ帳モードで開いたテキストフォームにコピー&ペーストして、 テストモード実行で 動作確認することができます。


上記例では、keyw.del_chars= の設定により '「' と '!' と '」' の3つの文字は検索文字列から削除されるので、実際には、
  なんかお川はサラサラ行くみたいな歌詞
と9文字以上一致する行を探して設定する処理になります。
一致するのは2行目の、
  春の{小|}{|がわ}、{さらさら|サラサラ}{|い}よ。
になります。
O:str= で指定した文字列変数 str[10] には
  春の小川は、さらさら行くよ。
の文字列が設定されます。


[BACK]
プロセルピナ