改行の削除方法を教えてくださいNo.04696
たろ親父 さん 05/05/20 13:15
 
こんにちは、はじめまして
マクロ初心者なのですが、
同じ形式のtextデータで
改行を14行削除して、1行残して
また14行削除して、1行残して のマクロはどのように書けばいいのでしょうか?
CSV形式のデータに変えるために、不要な改行を削除したいのです。

宜しくお願い致します。

たろ親父

[ ]
RE:04696 改行の削除方法を教えてくださいNo.04697
ENCODINGSHIFTJIS さん 05/05/20 17:57
 
1.1レコード分の操作を「記録」します。

レコードの先頭にカーソルを置く
キー記録開始
改行を検索+削除を繰り返す
最後は、次レコードの頭にカーソルを置く(改行検索+右)
キー記録終了

2.キー操作再生
縦スクロールバーを見ていると、進行がわかる
3.良好なら .mac ファイルに保存

手操作のみで、できます。

[ ]
RE:04697 ありがとうございます。No.04698
たろ親父 さん 05/05/20 19:16
 
ENCODINGSHIFTJIS さん ありがとうございます。
出来ました。
これを、自動に連続して行うようにするのは、難しいのでしょうか?
よろしければ、教えてやってください。宜しくお願い致します。

[ ]
RE:04698 ありがとうございます。No.04699
アルビレオ さん 05/05/20 19:42
 
秀丸ユーザーのアルビレオです。

>これを、自動に連続して行うようにするのは、難しいのでしょうか?
>よろしければ、教えてやってください。宜しくお願い致します。

保存した.macファイルを元に繰り返し行えるようにすることはわりと簡単ですが、
最後まで処理を終えたことを正しく判定するのはちょっとめんどうです。
終了判定が正しく行えないと必要な部分も削除してしまったりすることになりま
す。

保存した.macファイルはごく小さいものだと思うので、ここにその内容を書けば
私かほかの誰かが改造してくれるでしょう。

[ ]
RE:04699 今の内容です。No.04700
たろ親父 さん 05/05/20 22:03
 
こんばんは、アルビレオさん
この様な内容です。

------------------------------------------------------
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 searchdown "\\n" , regular, nocasesense;
 if( ! result )  beep;
 delete;
 down;
 left 14;
-------------------------------------------------------
きちんと出来てるのか不安ですが^_^;

宜しくお願い致します。

[ ]
RE:04700 今の内容です。No.04701
たろ親父 さん 05/05/20 22:05
 
ENCODINGSHIFTJIS さん に教えて頂いた

改行+右?が良くわかりません?^_^;
一つ前のコードであってるのでしょうか?

[ ]
RE:04701 今の内容です。No.04702
encodingshiftjis さん 05/05/20 22:57
 
down; left 14;
画面表示ベースの動作は、データの乱れに弱い。

--------------
#ln=lineno-1;
while( #ln < lineno ){ // 2行で1件 の場合
 golineend2;
 delete;
 golineend2;
#ln=lineno;
 right;
}
--------------

[ ]
RE:04700 今の内容です。No.04703
アルビレオ さん 05/05/20 23:19
 
アルビレオです。

こんな感じでしょうか
------------------------------------------------------
#i = 0;//カウンターを初期化
gofiletop;//ファイルの先頭へ移動
while(1){
 golineend2;//行の最後へ移動
 #i = #i + 1;//カウンターを1増やす
 if(#i < 14){
  //1〜13個目
  delete;//改行文字を削除
 }else{
  //14個目
  right;//1行下の先頭へ移動
  if(!result) endmacro;//一番最後だったら終了
  #i = 0;//カウンターをリセット
 }
}
------------------------------------------------------

>改行+右?が良くわかりません?^_^;
「次の行の先頭へ移動」をするための手法のひとつです。
行の最後にカーソルがあれば、[→]キーで次の行の先頭に移動しますよね?
上のマクロでも「right;//1行下の先頭へ移動」の部分で使っています。

[ ]
RE:04703 OKです。No.04704
たろ親父 さん 05/05/21 00:32
 
アルビレオさん ありがとうございます。
ばっちりokのようです。

ただ時々、こちらのデータの改行数が違うところがあるみたいです。
データの行数を治します。

ありがとうございました。

[ ]
RE:04703 今の内容です。No.04705
山紫水明 さん 05/05/21 08:31
 
 アルビレオさん,こんにちは。
 ちょっと余計なお節介ですが,

>行の最後にカーソルがあれば、[→]キーで次の行の先頭に移動しますよね?
>上のマクロでも「right;//1行下の先頭へ移動」の部分で使っています。

 動作環境→編集→高度な編集2→「行末<->次の行の行頭」の移動禁止

の設定のよりますね。通常はここにチェックしている人の方が少ないとは思いま
す。
 多分,アルビレオさん百も承知の上で,ここでは無視されたとは思いますが。

 それと,最初の行数が14の倍数でない場合に,最後の改行が外されたままにな
ってしまいます。それでもかまわない場合もあるとは思いますが。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]