リターンの数を数えたいNo.04033
hrogawa さん 04/01/22 19:13
 
こんにちは。
マクロ長初心者です。

今回はリターンの数を数えるマクロを作るにはどうすればいいかお聞きしたいと思っ
ています。

1文が非常に長いテキストが大量に入っているデータがあり,実際何個の文があるか
数えたいと思っています。
そこで,リターンのを数えればいいのではないかと思ったのですが,どうすればいい
かわかりません。

ご相談に乗っていただけると助かります。


[ ]
RE:04033 追加の相談ですNo.04034
hrogawa さん 04/01/22 19:41
 
先ほど質問の中で話したテキストは以下のようなものです。

./access.17Jan-0645AM - - [16/Jan/2004:07:39:12 +0900] "GET /b_servlet/Searc
hServlet?SEARCH_KEYWORD=%BC%C4%B8%B6&SEARCH_KIND=3&ONLINE_GET_COUNT=10&j_enc
oding=EUC-JP HTTP/1.1"
./access.17Jan-0645AM - - [16/Jan/2004:07:41:43 +0900] "GET /b_servlet/Searc
hServlet?SEARCH_KEYWORD=%BC%C4%B8%B6&SEARCH_KIND=3&ONLINE_GET_COUNT=10&j_enc
oding=EUC-JP HTTP/1.1"
./access.17Jan-0645AM - - [16/Jan/2004:08:06:52 +0900] "GET /b_servlet/Searc
hServlet?ACTION=1&ONLINE_GET_COUNT=10&SEARCH_KIND=3&SEARCH_KEYWORD=%E6%B6%88
%E8%B2%BB%E7%A8%8E%20%E7%B7%8F%E9%A1%8D%E8%A1%A8%E7%A4%BA& HTTP/1.1"
./access.17Jan-0645AM - - [16/Jan/2004:13:12:14 +0900] "GET /b_servlet/Searc
hServlet?SEARCH_KEYWORD=&SEARCH_KIND=3&ONLINE_GET_COUNT=10&j_encoding=EUC-JP
 HTTP/1.1"




さらに,この中から「SEARCH_KEYWORD=%・・・」がない文を削除したいと思います。
上のデータなら4行目です。
%がない文を削除するというマクロでできないかと思ってます。
どんなマクロを組めばいいのでしょうか。
ヒントだけでも教えていただけるとありがたいです。

[ ]
RE:04033 リターンの数を数えたいNo.04035
アルビレオ さん 04/01/22 22:00
 
アルビレオです。

>今回はリターンの数を数えるマクロを作るにはどうすればいいかお聞きしたいと思っ
>ています。

マクロを組むより、「エディタ的」行番号を表示した方が簡単です。
[ファイルタイプ別の設定]-[全般]-[詳細]で設定できます。

マクロ変数として数値を取りたいなら

gofileend;
#lines=lineno;
if(column==0) #lines=#lines-1;//最後が空行なら1引く

ですね。

[ ]
RE:04034 追加の相談ですNo.04036
アルビレオ さん 04/01/22 22:40
 
アルビレオです。

>先ほど質問の中で話したテキストは以下のようなものです。

別のツリーにぶら下がっちゃいましたね(^^;

>./access.17Jan-0645AM - - [16/Jan/2004:07:39:12 +0900] "GET /b_servlet/Searc
>hServlet?SEARCH_KEYWORD=%BC%C4%B8%B6&SEARCH_KIND=3&ONLINE_GET_COUNT=10&j_enc
>oding=EUC-JP HTTP/1.1"
>./access.17Jan-0645AM - - [16/Jan/2004:07:41:43 +0900] "GET /b_servlet/Searc
>hServlet?SEARCH_KEYWORD=%BC%C4%B8%B6&SEARCH_KIND=3&ONLINE_GET_COUNT=10&j_enc
>oding=EUC-JP HTTP/1.1"
>./access.17Jan-0645AM - - [16/Jan/2004:08:06:52 +0900] "GET /b_servlet/Searc
>hServlet?ACTION=1&ONLINE_GET_COUNT=10&SEARCH_KIND=3&SEARCH_KEYWORD=%E6%B6%88
>%E8%B2%BB%E7%A8%8E%20%E7%B7%8F%E9%A1%8D%E8%A1%A8%E7%A4%BA& HTTP/1.1"
>./access.17Jan-0645AM - - [16/Jan/2004:13:12:14 +0900] "GET /b_servlet/Searc
>hServlet?SEARCH_KEYWORD=&SEARCH_KIND=3&ONLINE_GET_COUNT=10&j_encoding=EUC-JP
> HTTP/1.1"
>
>さらに,この中から「SEARCH_KEYWORD=%・・・」がない文を削除したいと思います。
>上のデータなら4行目です。

>%がない文を削除するというマクロでできないかと思ってます。
「%..」はURLに使えない文字をエンコードしたものです。
だからキーワードがアルファベットのみだと%を含まない「SEARCH_KEYWORD=」も
ありうるのでよくありません。
(だから「SEARCH_KEYWORD=%」というくくり方自体が間違いなわけですか)

キーワードが空、つまり「SEARCH_KEYWORD=&」を含む行を削除するようにした方
がいいでしょう。
あと、前回のマクロだと「SEARCH_KIND=」がない3行目も削除されちゃいます。

今作ろうとしているマクロを多少の推測を加えてまとめると、

1.「SEARCH_KEYWORD=」を含まない行を削除
2.「SEARCH_KEYWORD=&」を含む行(キーワードがない行)を削除
3.キーワードの前後の文字列を削除

という流れになると思いますが、これで問題ないでしょうか?

※今回の話題はマクロというより正規表現の範疇です。
 内容を理解するには正規表現について調べた方がいいでしょう。

[ ]
RE:04033 リターンの数を数えたいNo.04037
きいろいまふらあ さん 04/01/22 22:52
 
秀丸ユーザのきいろいまふらあと申します。

>そこで,リターンのを数えればいいのではないかと思ったのですが,どうすればいい
>かわかりません。

マクロヘルプで、目次→内部的な値を表現するキーワード→テキスト関連の中に
ある「linecount」というキーワードがそのまま使えるのではないかと思います。

お試し下さい。

[ ]
RE:04037 リターンの数を数えたいNo.04038
山紫水明 さん 04/01/22 23:32
 
 山紫水明です。

》「linecount」というキーワードがそのまま使えるのではないかと思います。

 この場合は linecount2 の方でしょうね。

     では, (^^)/~
                                       

[ ]
RE:04033 みなさんありがとうございますNo.04040
hrogawa さん 04/01/23 11:37
 
これからマクロや正規表現についてもっと学ばなければいけないと思っています。
ただ,秀丸の本を探したのですが,すべて絶版で手に入りませんでした。
こうしたことを学ぶのにいい本やサイトをご存知でしたら教えていただけませんか。

[ ]