3行を1固まりのデータとしてソートするNo.03761
haru さん 03/06/16 10:57
 
 鶴亀で使われているfilter.txtというファイルを、振り分け名で
ソートしたいのですが、よろしくお願いします。
 ご使用の方は、ご存じだと思いますが、3行で1データです。
 1行目の行頭に振り分け名があって、あとの2行はデータです。


(例−ここから)\tはタブです。
ゴミ箱直行
\t"From:" が "aaa" を含む
\t→ 通知無し+"\\ゴミ箱"に移動する
(例−ここまで)

[ ]
RE:03761 3行を1固まりのデータとしてソNo.03762
ながさわ さん 03/06/16 11:11
 
こんにちは、ながさわです。

> ご使用の方は、ご存じだと思いますが、3行で1データです。
> 1行目の行頭に振り分け名があって、あとの2行はデータです。

違いますよ。
1行目は振り分け名で、後続の複数行(行頭がタブ)が、条件とアクションです。

で、云わんとしていることは判らなくもないですが、振り分けの優先順位=振り
分け名ですか? たぶん、ほぼすべての人は『否』だと思いますが。

ま、『私は優先順位と振り分け名は一致する!』というのなら、テキストエディ
タでfilter.txtを開いて\n\tを\tに置換して、一旦(別名)保存。それをソート
した後にまた開いて\tを\n\tに置換してfilter.txtで保存すれば目的の処理とは
思います。

[ ]
RE:03762 3行を1固まりのデータとしてソNo.03763
haru さん 03/06/16 14:32
 
>ま、『私は優先順位と振り分け名は一致する!』というのなら、テキストエディ
>タでfilter.txtを開いて\n\tを\tに置換して、一旦(別名)保存。それをソート
>した後にまた開いて\tを\n\tに置換してfilter.txtで保存すれば目的の処理とは
>思います。
 そうです。『私は優先順位と振り分け名は一致する!』派です。
 というか、特に優先順位はありません。
 というより、振り分け名がどこにあるのか簡単に探したいという
のが主旨なんですが。

 ところで、手動ではできたのですが、

(別例ここから)
いいい\tB
\t"To:/From:" が "iii" の単語を含む
\t→ "いいい"に移動する
(別例ここまで)


 上記のように、行頭以外にも\tが出現したので、\n\tを\t\tにし
て、マクロを作りました。

$filename2 = filename2;
replaceallfast "\n\t", "\t\t", regular;
disabledraw;
run "sort < con > " + $filename2;
enabledraw;
openfile $filename2;
replaceallfast "\t\t", "\n\t", regular;

 という風にしてやったのですが、最後の行が実行されません。
 どうすれば良いか教えて下さい。
 よろしくお願いします。

[ ]
RE:03763 3行を1固まりのデータとしてソNo.03764
ENCODINGSHIFTJIS さん 03/06/16 20:00
 
> という風にしてやったのですが、最後の行が実行されません。
それはともかく

replaceallfast "\n\t", "\t\t", regular;
selectall;
disabledraw;
run "sort < con > con";
enabledraw;
replaceallfast "\t\t", "\n\t", regular;

どうでしょう。
それはともかく
本体をSORTせずに、Grepの結果をSORTしてジャンプとか
tagsファイルのようなインデックスで扱う方向も
あります。


[ ]
RE:03764 3行を1固まりのデータとしてソNo.03765
haru さん 03/06/17 13:59
 
>replaceallfast "\n\t", "\t\t", regular;
>selectall;
>disabledraw;
>run "sort < con > con";
>enabledraw;
>replaceallfast "\t\t", "\n\t", regular;
>どうでしょう。
 ありがとうございます。
 うまくいきました。

[ ]
RE:03764 3行を1固まりのデータとしてソNo.03766
haru さん 03/06/18 09:08
 
 質問なんですが、

>replaceallfast "\n\t", "\t\t", regular;
>selectall;
>disabledraw;
>run "sort < con > con";
>enabledraw;
>replaceallfast "\t\t", "\n\t", regular;

 selectall;
 を外すと、うまくいきません。
 何か、「すべてを選択」以外に特別な意味があるんでしょうか?
 それとも、単に、そういう使い方をせよ、ということなんでしょ
うか?
 よろしくお願いします。

[ ]
RE:03766 3行を1固まりのデータとしてソNo.03767
ENCODINGSHIFTJIS さん 03/06/18 10:20
 
> selectall;
> を外すと、うまくいきません。
> 何か、「すべてを選択」以外に特別な意味があるんでしょうか?

>>run "sort < con > con";

STDOUTを受ける地点を作っています。無いと新面を開いたりします。

注意)処理中の事故の安全対策として
ファイル名を事前に変えたほうが良いでしょう。

[ ]
RE:03767 3行を1固まりのデータとしてソNo.03769
haru さん 03/06/19 10:22
 
>> selectall;
>> を外すと、うまくいきません。
>> 何か、「すべてを選択」以外に特別な意味があるんでしょうか?
>>>run "sort < con > con";
>STDOUTを受ける地点を作っています。無いと新面を開いたりします。
 run "sort < con > con";
 で、そうなることは、わかりました。
 ありがとうございます。

 ところで、しつこいようなんですが、

(okマクロここから)
replaceallfast "\n\t", "\t\t", regular;
selectall;
disabledraw;
run "sort < con > con";
enabledraw;
replaceallfast "\t\t", "\n\t", regular;
(okマクロここまで)

 では、ok(画面上でソート結果が見れる)なのに、

(NGマクロここから)
replaceallfast "\n\t", "\t\t", regular;
disabledraw;
run "sort < con > con";
enabledraw;
replaceallfast "\t\t", "\n\t", regular;
(NGマクロここまで)

 では、画面上では、
 replaceallfast "\n\t", "\t\t", regular;
 の実行結果までしか表示されません。

 selectall;
 の有り無しで、どうしてこうなってしまうんですか?
 よろしくお願いします。

[ ]
RE:03769 3行を1固まりのデータとしてソNo.03770
ながさわ さん 03/06/19 10:55
 
こんにちは、ながさわです。

> selectall;
> の有り無しで、どうしてこうなってしまうんですか?
> よろしくお願いします。

runの実行によって、新たな秀丸ができたとしてもマクロの実行権はそちらに移
動しないから、です。ヘルプには載ってないかもしれませんが、プロセスタイム
チャートを自分で書いてみれば理解できると思います。

それと、見た目上裏になってしまった秀丸でアンドゥをしてみるってのもいいか
もしれません。

[ ]
RE:03770 3行を1固まりのデータとしてソNo.03771
haru さん 03/06/19 14:02
 
ながさわさん、こんにちは。

>runの実行によって、新たな秀丸ができたとしてもマクロの実行権はそちらに移
>動しないから、です。ヘルプには載ってないかもしれませんが、プロセスタイム
>チャートを自分で書いてみれば理解できると思います。
>それと、見た目上裏になってしまった秀丸でアンドゥをしてみるってのもいいか
>もしれません。
 わかりました。
 ありがとうございます。

[ ]