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();