検索した行を消す。。No.00386
カルロス さん 99/02/05 12:02
 
いつもお世話になっている、カルロスです。m(_ _)m
またまた教えてもらいたいですが
grepファイルで要らない行を消したいから。
1・ある単語を含む行を検索していてヒットするとその行を消す、
2・次の行を探す。
この2つをファイルの最後まで繰り返したい。
そこでこのマクロを考えたが。。。
==========================
gofiletop;
main:
searchdown "abc"
if( result ){deleteline;
}
goto main;
endmacro;
==========================
ってやるとなんか思い通りの結果が出ない。なおループしないと一行だけ
消してくれますがループさせるとだめ。何が間違っているですか。

それともう一つ、

ある行の頭の単語を取得してそれをマクロ内で比較させたいのですが、
どんな命令を使えばいいのかわからない。
=======================================
golinetop; ここで行の頭に行く(って説明要らないんですようね)
#a=copyword;ここで頭の単語を取得しているつもり(^_^;)
=======================================
ってやるのは間違いだと言われちゃう。
自分としては合っているようなでも間違っているような気が。。。

本当はどういう風に取得するものですか?

宜しくお願いします。m(_ _)m

[ ]
RE:00386 検索した行を消す。。No.00387
ひろ さん 99/02/05 17:03
 
 カルロスさん今日は、ひろです。
> 1・ある単語を含む行を検索していてヒットするとその行を消す、
> 2・次の行を探す。
> この2つをファイルの最後まで繰り返したい。
//--------------------------------------------------------
gofiletop;
searchdown "abc";
while(result){
  deleteline;
  finddown;
}findup;// file の先頭にあった場合の対処
if(result)deleteline;
endmacro;
//--------------------------------------------------------
で如何でしょうか?

> =======================================
> golinetop; ここで行の頭に行く(って説明要らないんですようね)
> #a=copyword;ここで頭の単語を取得しているつもり(^_^;)
> =======================================
 取り敢えず単語の取得目でならば、
//--------------------------------------------------------
getsearch;
$word=searchbuffer;
//--------------------------------------------------------
で如何でしょうか?

[ ]
RE:00387 検索した行を消す。。No.00388
カルロス さん 99/02/05 17:48
 
> カルロスさん今日は、ひろです。
    こんにちは、いつもレスをありがとうございます。<(__)>
>で如何でしょうか?
   試してみます。  
>//--------------------------------------------------------
>getsearch;
>$word=searchbuffer;
>//--------------------------------------------------------
>で如何でしょうか?
   ほお〜なるほど。ありがとうございます。
 
  差支えなかったらでいいんですが
  ・ひろさんはいつからマクロの勉強をし始めたんですか。
  ・ひろさんの仕事ってもしかしてプログラマ?

  風邪などに気をつけてください。では。。。(^^)/~~~

[ ]
RE:00387 検索した行を消す。。No.00389
カルロス さん 99/02/05 19:15
 
いま試した所、どうも連続した行だとうまく動かないです。
原意は行を消した後カーソルにあがった行は検索されないからです。
まあ、カーソルを一行上げたらうまく動きました。
>//--------------------------------------------------------
>gofiletop;
>searchdown "abc";
>while(result){
>  deleteline;
     up;  ←ここでカーソルを上に移動しました。
>  finddown;
>}findup;// file の先頭にあった場合の対処
>if(result)deleteline;
>endmacro;
>//--------------------------------------------------------
どうですか?これで私も中級者に合格したでしょうか?(^^;

では。。。(^^)/~~~

[ ]
RE:00388 検索した行を消す。。No.00390
ひろ さん 99/02/05 20:18
 
 カルロスさん今日は、ひろです。
>   ・ひろさんはいつからマクロの勉強をし始めたんですか。
 勉強というより必要に迫られて、書き始めたのが 3 年ほど前かな〜。

>   ・ひろさんの仕事ってもしかしてプログラマ?
 programer ではないでが、C 言語はどうにか解ります。職業は秘密(^^)。
また私程度の macro 作者に驚いてはいけません。ここに出入りされているの
は、私など足元にも及ばない macro 師です(^^)。

[ ]
RE:00389 検索した行を消す。。No.00391
ひろ さん 99/02/05 20:39
 
 カルロスさん今日は、ひろです。
>      up;  ←ここでカーソルを上に移動しました。
 確かに必要ですね(^^;。失礼しました。

[ ]
RE:00386 検索した行を消す。。No.00392
EXZS さん 99/02/06 00:07
 

 どうも、はじめまして、EXZSといいます。

>=======================================
>golinetop; ここで行の頭に行く(って説明要らないんですようね)
>#a=copyword;ここで頭の単語を取得しているつもり(^_^;)
>=======================================

 copywordに限らず、copy,cutなどの命令はクリップボードを経由して
 取得する必要があります。
 まず、クリップボードに取り込むことがら開始します。
 方法としては
 (1) beginselで選択開始→カーソル移動で範囲選択→copy等で
   クリップボードへ複写
  (2) selectword等で範囲選択→copy等でクリップボードへ
   複写
 (3) copywordなどのその命令のみで範囲選択できるもの

 となります。(1)が一番面倒ですが覚えるといかような文字も読み込める
 ようになるので便利です

 さて、クリップボードにデータがたまりましたら、
  beginclipboardread でクリップボードを秀丸に読み込むことを開始させ
 getclipboard にて一行分ずつデータを取り込みます。
 ですんで、一番最初のことをマクロでしようとすると次のように
 記述します。

    golinetop;
    copyword;
    beginclipboardread;
    $a = getclipboard;

 となります。

 あと、マクロヘルプには例文などものっているので一通りながめて
 見るのも手です。
 一番良い勉強はうまい人のマクロをのぞいていることでしょう。


 

[ ]
RE:00392 検索した行を消す。。No.00393
カルロス さん 99/02/06 01:33
 

 どうも、はじめまして、EXZSといいます。
    はじめまして&ヨロシク、カルロスです
>    golinetop;
>    copyword;
>    beginclipboardread;
>    $a = getclipboard;
>
> となります。
   なるほど、
   丁寧に説明していただいてありがとうございます。m(..)m
   #いろいろとあるんですね。    

> 一番良い勉強はうまい人のマクロをのぞいていることでしょう。
   そうですね。
    EXZSさんは"上手い人"の中の一人ですよね。
    これからも宜しくです。m(..)m

    では。。。

[ ]
RE:00386 検索した行を消す。。No.00394
ひろ さん 99/02/06 12:47
 
 カルロスさん今日は、ひろです。
> 1・ある単語を含む行を検索していてヒットするとその行を消す、
> 2・次の行を探す。
 もっと上手い方法がありました。
//----------------------------------------
replaceallfast ".*abc.*\\\\n","",regular;
endmacro;
//----------------------------------------
です。ただし正規表現を用いているので、「abc」の文字列指定には注意が必
要です。

[ ]
RE:00394 検索した行を消す。。No.00395
番頭++ さん 99/02/06 13:35
 
>replaceallfast ".*abc.*\\\\n","",regular;

ひろさん、こんにちはです。

replaceall "^.*abc.*\\n", "", regular, inselect, ask;

と、ask を入れたほうが、「入門者」向けみたいな気がします。

[ ]
RE:00394 検索した行を消す。。No.00396
EMiCC さん 99/02/06 14:26
 
ひろさん、こん××は。

>replaceallfast ".*abc.*\\\\n","",regular;
これ、わたしも前からやりたかったんですけど思いつかずに、
検索しては手動で消していました。
今後はこれを使わせていただきます。 <m(_ _)m>

P.S.マクロ自体はほとんど使わないけど、この会議室まめに
チェックしといてよかった。 (^_^)V

[ ]
RE:00395 検索した行を消す。。No.00397
ひろ さん 99/02/06 18:07
 
 番頭++さん今日は、ひろです。
> replaceall "^.*abc.*\\n", "", regular, inselect, ask;
>
> と、ask を入れたほうが、「入門者」向けみたいな気がします。
 一度に処理したいときに、ask を入れると面倒かと思ったのですが、それ
以前に「\\\\n」ではなく「\\n」ですね(^^;。

[ ]
RE:00397 検索した行を消す。。No.00399
カルロス さん 99/02/06 23:16
 

  番頭++さん、ひろさん こんにちはカルロスです(^_^)/ ハーイ。

>> replaceall "^.*abc.*\\n", "", regular, inselect, ask;
  皆さんのお陰で非常にコンパックとになりました。有難う御座いますm(__)m
  ところで、Help探しましたが"inselect"と言う命令は見かけなかったのです。
  何する命令ですか。教えてください。

>> と、ask を入れたほうが、「入門者」向けみたいな気がします。
> 一度に処理したいときに、ask を入れると面倒かと思ったのですが、それ
  無い方が私の目的に合っていますけど、大変勉強になりました。
  有難う御座います。m(__)m

   では。。。(^0^)/~~see you !

[ ]
RE:00393 検索した行を消す。。No.00400
EXZS さん 99/02/06 23:29
 
>> 一番良い勉強はうまい人のマクロをのぞいていることでしょう。
>   そうですね。
>    EXZSさんは"上手い人"の中の一人ですよね。

 上手かどうかはわかりませんが、仕事でプログラム作成時の
 補助用にマクロを何本か作成しました。無論、仕事用に
 偏っているので発表できるほどのものではありませんが。

 私も他のかたのマクロを読んで”盗ませて”頂きました。
 このページでダウンロードできるかたのマクロはどれも
 大変有益ですよ。

[ ]
RE:00399 検索した行を消す。。No.00402
番頭++ さん 99/02/08 14:55
 
>  ところで、Help探しましたが"inselect"と言う命令は見かけなかったのです。
>  何する命令ですか。教えてください。

ヘルプにありますよ。ヘルプからの引用ですが、

「inselect を付けると範囲選択しているときに「選択した範囲内のみ」と同じ
動作になります。」

だそうです。

[ ]
RE:00402 検索した行を消す。。No.00403
カルロス さん 99/02/08 22:00
 
 番頭++様こんにちは、カルロスですm(_ _)m

>ヘルプにありますよ。ヘルプからの引用ですが、
  う〜む、探しても見つからないんです〜(´ヘ`;)

>「inselect を付けると範囲選択しているときに「選択した範囲内のみ」と同じ
>動作になります。」
>だそうです。
  いつもご親切にありがとうございます。
PS:
  番頭++さんのホームページに公開している書きマクロシリーズをDL
  させていただきました。見本にして"只今猛勉強中"です。(^^;
  また何かあれば宜しくお願いします。m(_ _)m

   では。。。

[ ]
RE:00403 検索した行を消す。。No.00405
番頭++ さん 99/02/09 19:45
 
>  番頭++さんのホームページに公開している書きマクロシリーズをDL
>  させていただきました。見本にして"只今猛勉強中"です。(^^;
>  また何かあれば宜しくお願いします。m(_ _)m

「それって、ありふれてません ... 」というコマーシャルが最近好きです。
それって、水銀水さんのことでしょう ...
番頭++ さんはこずかいの配分をビールにあてるのでホームページを持てません。

[ ]
RE:00405 検索した行を消す。。No.00407
カルロス さん 99/02/10 13:58
 
番頭++さん、こんにちはカルロスです

>「それって、ありふれてません ... 」というコマーシャルが最近好きです。
>それって、水銀水さんのことでしょう ...
  し、失礼しました。<(__)>。私は勘違いしていました。
 
  水銀水さん、許して下さい。すみません<(__)>。
 
  では。。。

[ ]