grep整形
以下を方法とする
var tasktbl = new Array("","","*"); / ディレテーブル /
// / 関数名: timDATA / / 目的: grep結果作成支援 / / 2018-02-01 / // function trimDATA() { var data; / ファイル内のデータ / var task; / ディレ名 / var taskcnt = 0; / ディレ用カウンタ / var movecnt = 0; / カーソル移動用カウンタ / var linecnt = 0; / ライン用カウンタ / var linemax = 0; / ライン総数 /
/********************************************************************************************/
/* stage 1. 連続実行防止 */
/* 目的: マクロ実行後に再度実行することを防止する */
/* 方法: 『<ディレ名>\』が行頭にある場合連続で実行したと判断しメッセージ出力 */
/********************************************************************************************/
Editor.GoFileTop(); /* カーソルをファイルの先頭に移動 */
data = Editor.GetLineStr(0); /* カーソルがある行の文字列を取得 */
for(taskcnt = 0;
taskcnt < tasktbl.length; taskcnt++) /* ディレ名が一致するまでループ */
{
task = tasktbl[taskcnt] + '\\'; /* 『<ディレ名>\』に変更 */
if(data.indexOf(task) === 0) /* 『<ディレ名>\』が行頭にあった場合 */
{
Editor.MessageBox("実行済です"); /* メッセージ出力 */
return;
}
}
/********************************************************************************************/
/* stage 2. EOFを文字列がある最終行に移動 */
/* 目的: ファイル内の全行数を正確に把握する為 */
/* 方法: 文字列のない行にEOFがあった場合バックスペースで文字列がある最終行にEOFを移動させる */
/********************************************************************************************/
Editor.GoFileEnd(); /* カーソルを最終行に移動 */
data = Editor.GetLineStr(0); /* カーソルがある行の文字列を取得 */
if(data.length <= 0) /* 最終行に文字がない場合 */
{
Editor.DeleteBack(); /* バックスペース */
}
/********************************************************************************************/
/* stage 3. 『[UTF8]: 』を削除 */
/* 目的: 不要な為 */
/* 方法: 『[UTF8]: 』の文字列を全削除 */
/********************************************************************************************/
Editor.ReplaceAll("\\[SJIS\\]\\: ", '', 14); /* 『[UTF8]: 』を全削除 */
/********************************************************************************************/
/* stage 4. 『\jis\』のある行を削除 */
/* 目的: 不要な為 */
/* 方法: 『\jis\』の文字列がある行を全削除 */
/********************************************************************************************/
linemax = Editor.GetLineCount(0); /* ライン総数を取得 */
Editor.GoFileTop(); /* カーソルをファイルの先頭に移動 */
for(linecnt = 0; linecnt < linemax; linecnt++) /* 全行数ループ */
{
data = Editor.GetLineStr(0); /* カーソルがある行の文字列を取得 */
if(data.indexOf("\\jis\\") != -1) /* 『\jis\』があった場合 */
{
Editor.DeleteLine(); /* カーソルのある行を削除 */
}
else /* 『\jis\』がない場合 */
{
Editor.Down(); /* カーソルを1行下へ移動 */
}
}
/********************************************************************************************/
/* stage 5. 空白間隔の縮小 */
/* 目的: 文字列の長さをに縮小させる */
/* 方法: 全タブを半角スペースに置換後2つ連続である半角スペースを存在させない */
/********************************************************************************************/
Editor.ReplaceAll("\\t", ' ', 14); /* 全タブを半角スペースに置換 */
Editor.SelectAll(); /* ファイル内文字列全選択 */
data = Editor.GetSelectedString(0); /* 全文字列取得 */
Editor.CancelMode(); /* 選択解除 */
while(data.indexOf(" ") != -1) /* 2つ連続で半角スペースがある間 */
{
Editor.ReplaceAll(" ", ' ', 14); /* 1つの半角スペースに置換 */
Editor.SelectAll(); /* ファイル内文字列全選択 */
data = Editor.GetSelectedString(0); /* ファイル内の全文字列取得 */
Editor.CancelMode(); /* 選択解除 */
}
/********************************************************************************************/
/* stage 6. パス縮小 */
/* 目的: ディレ名より左にあるパスは不要の為削除 */
/* 方法: 1行目のパスにあるディレ名までカーソルを移動し矩形選択で最終行先頭に移動し削除 */
/********************************************************************************************/
linemax = Editor.GetLineCount(0); /* ライン総数を取得 */
Editor.GoFileTop(); /* カーソルをファイルの先頭に移動 */
data = Editor.GetLineStr(1); /* 先頭行の文字列取得 */
for(taskcnt = 0;
taskcnt < task.length; taskcnt++) /* ディレ名が一致するまでループ */
{
task = '\\' + tasktbl[taskcnt] + '\\'; /* 『\<ディレ名>\』に変更 */
if(data.indexOf(task) != -1) /* 『\<ディレ名>\』が一致した場合 */
{
for(movecnt = 0;
movecnt <= data.indexOf(task);
movecnt++)
{
Editor.Right_Sel(); /* カーソルを『<ディレ名>\』の位置まで移動 */
}
Editor.BeginBoxSelect(); /* 矩形選択モード開始 */
Editor.Jump(linemax, 0); /* 最終行の先頭まで移動 */
Editor.Delete(); /* ディレより前のパス全削除 */
Editor.CancelMode(); /* 選択解除 */
break;
}
}
/********************************************************************************************/
/* stage 7. パスと内容の分割 */
/* 目的: Excelに張る際にパスと内容のセルを分ける為 */
/* 方法: 最初に発見する半角スペースはパスと内容の間にあることを利用し半角スペースをタブに置換 */
/********************************************************************************************/
Editor.GoFileTop(); /* カーソルをファイルの先頭に移動 */
linemax = Editor.GetLineCount(0); /* ライン総数を取得 */
for(linecnt = 0; linecnt < linemax; linecnt++) /* 全行数ループ */
{
Editor.GoLineTop(0); /* カーソルを行頭に移動 */
Editor.SearchNext(' ', 18); /* 発見した半角スペースを選択状態へ */
Editor.InsText('\t'); /* 半角スペースをタブに置換 */
Editor.CancelMode(); /* 選択解除 */
Editor.Down(); /* カーソルを1行下へ移動 */
}
/********************************************************************************************/
/* stage 8. 終了処理 */
/* 目的: ファイルの先頭への移動をマクロ終了の合図とする */
/* 方法: カーソルをファイルの先頭に移動 */
/********************************************************************************************/
Editor.GoFileTop(); /* カーソルをファイルの先頭に移動 */
}
trimDATA();