勝手にしやがれ Part2.

【投稿時の注意】
パスワード入力:必須。投稿後の削除時は同じパスワードを使います。
投稿者入力:いまのところ任意。入力を省略すると「名無しさん」がデフォルトで表示されます
Eメール入力:いまのところ任意。
リンクの入力:本文中に http の文字列が含まれると投稿出来ません。URL を貼るときは h 抜きで ttp:// とするなど工夫してみて下さい

3 / 13 ツリー ←次へ | 前へ→

【66】難しいのかもしれない要望です(logsortw)m(__)m 文太 2008/09/19(金) 0:47
【69】Re:難しいのかもしれない要望です(logsortw)... 文太 2008/09/19(金) 12:28
【71】Re:難しいのかもしれない要望です(logsortw)... Si 2008/09/21(日) 20:56
【72】Re:難しいのかもしれない要望です(logsortw)... Si 2008/09/21(日) 21:22
【74】Re:難しいのかもしれない要望です(logsortw)... 文太 2008/09/22(月) 0:57
【79】Re:難しいのかもしれない要望です(logsortw)... 文太 2008/09/24(水) 1:27
【81】Re:難しいのかもしれない要望です(logsortw)... Si 2008/09/25(木) 23:39
【83】Re:難しいのかもしれない要望です(logsortw)... 文太 2008/09/26(金) 0:15
【86】Re:難しいのかもしれない要望です(logsortw)... Si 2008/09/28(日) 11:02
【87】Re:難しいのかもしれない要望です(logsortw)... 文太 2008/09/28(日) 13:09
【90】LOGSORTW ver1.25.1 Si 2008/09/30(火) 1:17
【93】Re:LOGSORTW ver1.25.1 文太 2008/09/30(火) 16:56
【94】Re:LOGSORTW ver1.25.1 文太 2008/09/30(火) 17:01
【95】Re:LOGSORTW ver1.25.1 Si 2008/09/30(火) 23:56
【99】Re:LOGSORTW ver1.25.1 文太 2008/10/01(水) 13:08
【100】LOGSORTW ver1.25.2 Si 2008/10/02(木) 1:37
【102】Re:LOGSORTW ver1.25.2 文太 2008/10/02(木) 12:49
【103】Re:LOGSORTW ver1.25.2 文太 2008/10/02(木) 12:51
【105】Re:LOGSORTW ver1.25.2 Si 2008/10/03(金) 0:30
【106】Re:LOGSORTW ver1.25.2 Si 2008/10/03(金) 0:37
【110】Re:LOGSORTW ver1.25.2 文太 2008/10/04(土) 10:46
【112】Re:LOGSORTW ver1.25.2 Si 2008/10/05(日) 1:09
【113】Re:LOGSORTW ver1.25.2 文太 2008/10/05(日) 15:29
【114】Re:LOGSORTW ver1.25.2 Si 2008/10/06(月) 0:04
【115】Re:LOGSORTW ver1.25.2 文太 2008/10/06(月) 0:20
【117】Re:LOGSORTW ver1.25.2 文太 2008/10/06(月) 22:46
【118】Re:LOGSORTW ver1.25.2 文太 2008/10/07(火) 23:15
【120】Re:LOGSORTW ver1.25.2 Si 2008/10/08(水) 1:13
【123】Re:LOGSORTW ver1.25.2 文太 2008/10/08(水) 23:20
【124】Re:LOGSORTW ver1.25.2 としき 2008/10/09(木) 22:09
【125】Re:LOGSORTW ver1.25.2 文太 2008/10/10(金) 18:02
【127】Re:LOGSORTW ver1.25.2 としき 2008/10/11(土) 12:53
【128】Re:LOGSORTW ver1.25.2 文太 2008/10/11(土) 13:28
【138】Re:LOGSORTW ver1.25.2 Si 2008/10/19(日) 23:34
【139】Re:LOGSORTW ver1.25.2 としき 2008/10/20(月) 22:21
【140】Re:LOGSORTW ver1.25.2 文太 2008/10/20(月) 22:32
【142】Re:LOGSORTW ver1.25.2 としき 2008/10/20(月) 23:42
【143】Re:LOGSORTW ver1.25.2 文太 2008/10/21(火) 13:20
【147】Re:LOGSORTW ver1.25.2 としき 2008/10/21(火) 20:48
【148】Re:LOGSORTW ver1.25.2 文太 2008/10/22(水) 10:58
【146】EOF? 文太 2008/10/21(火) 14:26
【150】ファイル末改行付加 文太 2008/10/22(水) 21:18
【96】Re:LOGSORTW ver1.25.1 konno 2008/10/01(水) 0:12
【98】Re:LOGSORTW ver1.25.1 Si 2008/10/01(水) 0:20
【104】Re:LOGSORTW ver1.25.1 konno 2008/10/03(金) 0:17
【101】Re:LOGSORTW ver1.25.1 Si 2008/10/02(木) 1:42
【107】Re:LOGSORTW ver1.25.2 konno 2008/10/03(金) 0:37
【108】Re:LOGSORTW ver1.25.2 Si 2008/10/03(金) 0:56
【109】Re:LOGSORTW ver1.25.2 konno 2008/10/03(金) 23:50
【111】LOGSORTW ver1.25.3 Si 2008/10/05(日) 0:50
【116】Re:LOGSORTW ver1.25.3 konno 2008/10/06(月) 1:17
【121】Re:LOGSORTW ver1.25.3 Si 2008/10/08(水) 1:18

【66】難しいのかもしれない要望です(logsortw)...
 文太  - 2008/09/19(金) 0:47 -

引用なし
パスワード
   Siさん

 Nifsortwに

Error! 発言ヘッダが不正です
Skip!

 と怒られています。このメッセージが出るとき、何行目で引っかかっているの
か出力して頂くわけにはいかないでしょうか。

 「何してるの? 」ものではありましょうが、ログ的なものに nifty 形式ヘッ
ダを入れると、情報管理が楽なわけなのです。BBSのログにしろどっかの過去
ログにせよ、nifty の形式にしておくと。
 それで、VzマクロやSedあるいはAwkスクリプトでヘッダ変換をしたり
しているわけなのです。が、「うーん、どこがいけないんだぁ〜」と泣くはめに
なっております。せめて何行目か教えて下さいよ、と LOGSORTW にお願いしたい
わけなのです。

 目では確認できないけれど、元データにマクロが異常動作するような、たとえ
ば「文字化け」のようなものが混入している可能性がきわめて高いと思っていま
す。実は先日、logsortw のソースを見てしまいました。nifty ログの場合には、
日付の行を読むのに「次行読み」をしているから…とかまでやったのです。その
ときはうまくいったのに…。

 どうせ行番号管理してますよねぇ…。sedだってしてるもん。

 「おじえてぐだざい、どこではじいているのか、おねがいじまず。logsort様」

文太

【69】Re:難しいのかもしれない要望です(logsort...
 文太  - 2008/09/19(金) 12:28 -

引用なし
パスワード
    犯人はこいつ。

> 05684/99999 MIX00000 おかけし     dummy title
> ( 4)  -1/-1/-1 -1:-1

 憎たらしいので、ここでは意味ないのですが、引用符を付けてやりました。
 犯人は文字化けではなく、生ヘッダでした。く、くそう。

 「ぐすん、nifsort が教えてくれないなら自分で探すしかないぞなもし、めそ
めそ」と言いながら昨晩寝たのですが、一晩寝たら考えつきました。

--------------------------------------
C:\>wc -l c:\kek
  7958

C:\>head -3500 c:\kek >kek2

C:\>nifsort kek2
Reading: KEK2
Sorting[1167]
...Writing
...Finish

C:\>head -4000 c:\kek >kek2

C:\>nifsort kek2
Reading: KEK2
Error! 発言ヘッダが不正です
Skip!
--------------------------------------

 ヘッダ部分をグレップ。7958 行。
:A 半分に切っていって、nifsortにかける。ループ>A
 上の場合、3500から4000の間が苦闘でした。

 不正場所の行番号を出してやってくださいませ。m(__)m

追伸:logsort(w) (=nifsort)も最新版にしました。v(^^) m(__)m

【71】Re:難しいのかもしれない要望です(logsort...
 Si  - 2008/09/21(日) 20:56 -

引用なし
パスワード
   ▼文太さん:
> 不正場所の行番号を出してやってくださいませ。m(__)m

対応させてみました。

実際のログが手元にないので動作確認は起動確認だけです。
ユーザーさんに試していただく格好になってしまいますが、よろしくです。

【72】Re:難しいのかもしれない要望です(logsort...
 Si  - 2008/09/21(日) 21:22 -

引用なし
パスワード
   あら?
投稿時にファイルをアップロードしたのですがうまく出来ていないようです。
と云うことで本サイトの方にアップしておきました。
直リンクを貼っておきます。

ttp://dmz.xrea.jp/dahlia/soft/lsrtw125-bunta.lzh

投稿制限の禁止語句に引っかかるので先頭の h は省いてあります。補完してください。

【74】Re:難しいのかもしれない要望です(logsort...
 文太  - 2008/09/22(月) 0:57 -

引用なし
パスワード
   Siさん、完璧です。m(__)m

c:\>type TEST.LOG
00043/99999 MIX00000 xxxxx      dummy title
( 4)  91/01/13 05:17 00041へのコメント

00056/99999 MIX00000 xxxxxxxx     dummy title
( 4)  91/00/-1 07:46 00051へのコメント

00060/99999 MIX00000 xxxxxxxxxxxxx  dummy title
( 4)  91/01/15 00:45 00031へのコメント

c:\>Nifsortw TEST.LOG
Reading: TEST.LOG
Error! 発言ヘッダが不正です
TEST.LOG (5)
Skip!


 どうしようかな、と随分ながいあいだ悩んでいたのですが(ちょっと大袈裟)、
結局、僕はBBSやメーリング・リストのログを、nifty のログ・ヘッダに書き
換えることで一元的に管理することにしました。けっこう色々なパターンがあっ
て、 sed を使い awk を使い、最後の仕上げ(大抵面倒な処理が残るので、それ
はカーソルを飛ばしながら細かな条件判断をする処理)はVzマクロで、ヘッダ
変換をしてくれるシステムを構築しました。

 それは、 どうログが重複していても、 順番がずたずたでも、 最後の最後は
logsort.exe が、その一番大変なところは面倒見てくれるから、という安心感の
ためだったのです。

 発言ヘッダはふつうシステムが付けるものなので、そこに不正であることは想
定されてないのは当然なのですが、上のような理由で、個人的に、ほんとうに助
かる仕様になりました。ありがとうございます。すごいですね、やっぱり。本物
のプログラマーは。 (プロというわけではないのかもしれませんが)Si さんツ
ールのお陰で、まだまだ Vzer! m(__)m


追伸:個人的にそういうのはその前の段階できちんとはじいてますので問題ない
のですが、意地悪して以下を通したら、通ってしまいました。細かくやろうとし
たらカレンダーを内蔵しなくちゃですからね。

00056/99999 MIX00000 xxxxxxxx     dummy title
( 4)  91/13/15 07:46 00051へのコメント        #

00056/99999 MIX00000 xxxxxxxx     dummy title
( 4)  91/13/35 07:46 00051へのコメント        #


追伸2: wild+batch は明日、試します。いえ、グレップといえども、たぶん大
抵パターンをスクリプトから与えることはできると思いますので、逃げる方法が
ないわけでもないだろうと思っています。 ただ、sed や awk でも、ワンライナ
ーがすぐ使えるようになると、やっぱり道具を思うように使えるようになったと
感じられるので、といった感じなのです。 やっぱり、wild に関して言えば、マ
クロがすごいです。$f, $x, $b, $d 秀逸!!!

【79】Re:難しいのかもしれない要望です(logsort...
 文太  - 2008/09/24(水) 1:27 -

引用なし
パスワード
   Siさん、

> 追伸:個人的にそういうのはその前の段階できちんとはじいてますので問題ない
> のですが、意地悪して以下を通したら、通ってしまいました。細かくやろうとし
> たらカレンダーを内蔵しなくちゃですからね。

 月は13以上ない。
 日は32以上ない。これで十分でしょう。もちろん、マイナスなんてあるはずな
いので。あれはマクロのバグです。でも怪我の巧妙で、タグジャンプできるlogsort
になりました。m(__)m

【81】Re:難しいのかもしれない要望です(logsort...
 Si  - 2008/09/25(木) 23:39 -

引用なし
パスワード
   ▼文太さん:
> 月は13以上ない。
> 日は32以上ない。これで十分でしょう。もちろん、マイナスなんてあるはずな

どうせやるなら閏年のチェックまで折り込みたいです。

で、ふと思ったのですが、文太さんのように現在も NIFTYのログ形式でテキスト管理されている場合は、年の表記はどのようにされているのでしょう?
LOGSORT(W) は2桁の年表記にしか対応していないので、
2008/09/25

08/09/25
でOKでしょうか?

>いので。あれはマクロのバグです。でも怪我の巧妙で、タグジャンプできるlogsort
>になりました。m(__)m

タグジャンプは狙っていれました ^^;
ただメッセージの吐き出し先をが標準エラー出力にしてあるので気になっていたのですが、標準出力に変えなくとも良さそうですね。

【83】Re:難しいのかもしれない要望です(logsort...
 文太  - 2008/09/26(金) 0:15 -

引用なし
パスワード
   Siさん、

 おお、やっていただけますか!? m(__)m

> どうせやるなら閏年のチェックまで折り込みたいです。
 そ、そこまで?

> で、ふと思ったのですが、文太さんのように現在も NIFTYのログ形式でテキスト管理
> されている場合は、年の表記はどのようにされているのでしょう?
> LOGSORT(W) は2桁の年表記にしか対応していないので、
> 2008/09/25
> ↓
> 08/09/25
> でOKでしょうか?

 OKだと個人的には思います。僕が持っているもっとも古いniftyのログが
(11)  91/01/05 21:34
 で、mixでさえ
( 1)  90/04/02 20:38
 ですので、2090何まで生きられるとは到底思えませんので、2桁希望です。
 実際、4ケタのBBSログを頭2つ取るという作業を、マクロ群は行っていま
す。 しなくていいなら、それに越したことはないのです。 というか、logsortw
にお世話になる段階では、2桁に丸められています。
 という事情ですので、4ケタ処理にするなら、オプションで2桁処理が可能に
してください。m(__)m
 (nifty, PC-VANの通信ログのソートですから、やっぱり2桁がデフォだと思う。)

> タグジャンプは狙っていれました ^^;
 当然です。さすが、Siさん。

> ただメッセージの吐き出し先をが標準エラー出力にしてあるので気になっていたの
> ですが、標準出力に変えなくとも良さそうですね。

 これ、オプションで選べる、というのは駄目でしょうか。
 Vzer にとっては(このツールにものすごくお世話になっているのは、『我々』
だろうと思っているのです)、logsort が 16bit だったら、command.com の制
御下にありますから、 コンソール・ファイルの参照ができるのです(shift+ESC
で、黄色のバーが上に出るやつです。覚えていますか?)。
 しかしながら、32bit もの(logsortw)が出す出力というのは、どうせVzか
らは「コンソール・ファイルの参照」ができないので、リダイレクトしてからタ
グ・ジャンプするしかないのです。なのですが、それが「>」か「2>」かというの
はけっこう調べるのが面倒だったりするのです。
 ま、ドキュメントに「標準エラー出力」か「標準出力」か明示されていれば、
困らないといえば困らないのですが(たしかに僕は、今回これを実験したような
記憶があります)。

 そうか、 すると、logsort(16 bit, dos 用)というのも、タグ・ジャンプが
可能になるなら、ver up してもらう価値があるのか。 いえ、これは我が侭でし
ょう。ログの整理を純ドスでやったりはしない。メモリーもディスクも潤沢な
XPでやる作業ですね。というわけで、

 「標準エラー出力」か「標準出力」か、決めてしまってください。m(__)m

【86】Re:難しいのかもしれない要望です(logsort...
 Si  - 2008/09/28(日) 11:02 -

引用なし
パスワード
   ▼文太さん:
> 「標準エラー出力」か「標準出力」か、決めてしまってください。m(__)m

では、標準出力に固定とします。それと年表記も2桁固定。

で、時分の方ですが、

0 ≦ 時 < 24
0 ≦ 分 < 60

で良かったでしょうか?

当時の生ログがないので自分で確認できないのがもどかしいのですが、深夜24時丁度は 24/00 ではなくて、 00/00 かどうか?ってことです。

メッセージ出力先の変更、日付・時刻のチェック、この2点はオプションで選択できるようにしようかなとも考えましたが、コマンドラインオプション解析の手順が増えるのも面倒なのですべて固定にします。

16bit版は、とりあえず気が向いたら、っことにしておいて下さい。
あ、32bit版ならすぐに公開出来ます、と云うことではないのでご了解下さい ^^;

【87】Re:難しいのかもしれない要望です(logsort...
 文太  - 2008/09/28(日) 13:09 -

引用なし
パスワード
   Siさん

 「24:00」でなく「00:00」でした。ygrepって、けっこう癖あるんですよね。

ygrep -@ "^[(]..[)]  [0-9][0-9]/[0-9][0-9]/[0-9][0-9] 24:00"
ygrep -@ "^[(]..[)]  [0-9][0-9]/[0-9][0-9]/[0-9][0-9] 00:00"
           (ここ、\d\d/\d\d/\d\dって書けるグレップを使うべきだった)
 で、
(11)  91/03/10 00:00
 と出ました。

> では、標準出力に固定とします。それと年表記も2桁固定。

 はい。真っ直ぐな仕様と感じます。m(__)m

> で、時分の方ですが、
> 0 ≦ 時 < 24
> 0 ≦ 分 < 60
> で良かったでしょうか?

 はい、これでよいと思います。(^^)v

> 当時の生ログがないので自分で確認できないのがもどかしいのですが、

 いっぱい持っておりますので、どうぞいつでもお申し付けください。

> メッセージ出力先の変更、日付・時刻のチェック、この2点は(中略)
> すべて固定にします。

 選べなくいいですよ、ほんとに。ありがとうございます。

> あ、32bit版ならすぐに公開出来ます、と云うことではないのでご了解下さい ^^;

 了解です。m(__)m

【90】LOGSORTW ver1.25.1
 Si  - 2008/09/30(火) 1:17 -

引用なし
パスワード
   文太さん、色々情報・アドバイスありがとうございました。

とりあえずアップしておきます。
あまり動作確認してません ^^;

ttp://dmz.xrea.jp/dahlia/soft/lsrtw1251-bunta.lzh

いつものように投稿制限の禁止語句に引っかかるので先頭の h は省いてあります。補完してください。

【93】Re:LOGSORTW ver1.25.1
 文太  - 2008/09/30(火) 16:56 -

引用なし
パスワード
    僕は実験に失敗してますでしょうか。すぐ他人を疑うのはよくない癖なのですが、
上げるファイルを間違われましたか。じゃないと、あれ、あれ、あれ???
タイムスタンプは合っているみたいですよねぇ。

C:\test>Nifsortw TEST.LOG
Reading: TEST.LOG
Skip!                #これだけじゃ冷たい…。

C:\test>logsortw -N test.log    #renameして元に戻してみた
Reading: TEST.LOG
Skip!                #お、同じだ…。

NIFSORTW EXE   73728 08-09-30  1:25

 ですが。m(__)m

【94】Re:LOGSORTW ver1.25.1
 文太  - 2008/09/30(火) 17:01 -

引用なし
パスワード
    連続発言を連続していてすいません。
 これで試してみました。

00002/00002 xxx00000 文太       dummy title 
( 1)  04/09/30 01:20

00002/00002 xxx00000 文太       dummy title 
( 1)  04/09/30 25:20

 25時20分はないだろう。

【95】Re:LOGSORTW ver1.25.1
 Si  - 2008/09/30(火) 23:56 -

引用なし
パスワード
   ▼文太さん:
>00002/00002 xxx00000 文太       dummy title

xxx00000 を XXX00000 に変更して一度実行してみてください。
NIFTY の ID の英字部分は、会議室のログでは大文字表記しかなかったはずで。
自分でも、こんな細かなとこまでチェックしていたのかなあ、って感じです。

今度は正常に(?)エラーチェックがかかるはずです。
ただし、

>( 1)  04/09/30 25:20

ではなく、まさかの

>( 1)  04/09/30 01:20

でエラーになります。
これもこのダミーログに問題があるのですが、文太さんならテキストを開けばすぐに気付くと思いますのでひとまず対処方法は伏せておきます ^^;

別件。
NIFTYログ形式のテキストデータですが、めざらさんのところの掲示板の過去ログがNIFTYログ形式に加工されて公開されているのを思い出しました。
ありがたく頂いてきました。

【96】Re:LOGSORTW ver1.25.1
 konno WEB  - 2008/10/01(水) 0:12 -

引用なし
パスワード
   ▼Siさん:はじめまして、konnoといいます。
いつもLOGSORTにはたいへんお世話になっています。ありがとうございます。
今回、LOGSORTW ver1.25でエラー行が表示されるようになり、助かりました。

ところで、「複数の会議室ログが含まれているようです」というエラーだと
行番号が出ないようです。LOGSORTW ver1.25.1 でも同じようです。
これにも対応していただけるとありがたいのですが。
よろしくお願いします。m(__)m

【98】Re:LOGSORTW ver1.25.1
 Si  - 2008/10/01(水) 0:20 -

引用なし
パスワード
   ▼konnoさん:
>▼Siさん:はじめまして、konnoといいます。

どうもです。はじめまして、ではないような気もするのですが ^^;

>ところで、「複数の会議室ログが含まれているようです」というエラーだと
>行番号が出ないようです。LOGSORTW ver1.25.1 でも同じようです。

報告ありがとうございます。確認してこちらも行番号を出力するように考えます。

きょうはもう眠いので・・・この辺で失礼します。

【99】Re:LOGSORTW ver1.25.1
 文太  - 2008/10/01(水) 13:08 -

引用なし
パスワード
    色んな要望がでてきてしまいましたね。 需要があるからなんです。みんな Si
ツール頼みのネットワーク生活。感謝。m(__)m

 「xxx00000 文太」の小文字アルファベットは不注意で失礼しました。 そうで
す、「次行を読め」ってソースにありましたから、まずこの行をチェックしてい
るはずでした。で、ついでと言っては失礼なのですが、ここもエラーメッセージ
で行数を教えてくれるようにしていただけないでしょうか。一度間違えたという
ことは2度目がありそうですので。

 以下、変な書き方ですが、出力はそれぞれのファイルの中身です。最初、びっ
くりした。標準出力と標準エラー出力を分けたわけですね。


C:\TEST>Nifsortw TEST.LOG >kek

Error! 日付・時刻表記が不正です
TEST.LOG(5): ( 1)  04/09/30 25:20^M (■0Dhが出ます。再現しませんでしょうか?)

C:\TEST>Nifsortw TEST.LOG 2>kek2

Reading: TEST.LOG
Skip!


■の箇所ですが、コンソールは、

C:\TEST>Nifsortw TEST.LOG
Reading: TEST.LOG
Error! 日付・時刻表記が不正です
TEST.LOG(5): ( 1)  04/09/30 25:20

Skip!

 となっています。「Skip!」の前の空行が「^M」の影響なのかもしれないと
思いました。
 このコンソールファイルはVzで取り込めないので、リダイレクトしてタグ・
ジャンプするしかないのですけれど。


> ではなく、まさかの
> >( 1)  04/09/30 01:20
> でエラーになります。
> これもこのダミーログに問題があるのですが、文太さんならテキストを開けばす
> ぐに気付くと思いますのでひとまず対処方法は伏せておきます ^^;
 これ、エラーが出なくなりました(^^; ま、出たときにでも…。

【100】LOGSORTW ver1.25.2
 Si  - 2008/10/02(木) 1:37 -

引用なし
パスワード
   ▼文太さん:
>るはずでした。で、ついでと言っては失礼なのですが、ここもエラーメッセージ
>で行数を教えてくれるようにしていただけないでしょうか。一度間違えたという
>ことは2度目がありそうですので。

これはちょっと無理なんです。最初に正規表現を使ってメッセージヘッダを探し出すのですが、ファイルの終わりまで読み込んでもマッチする行がみつからなかった、と云うことですので。

つまり、「xxx00000 文太」の小文字アルファベットはその行がそもそもヘッダとして認識されないので、それ自体はエラーチェックもかからず、単に無視されるだけ。だからエラーメッセージで行数を教えたくても出来ないのです。

たぶん、釈然としないと思いますが、そういうことなんでご理解下さい。

>TEST.LOG(5): ( 1)  04/09/30 25:20^M (■0Dhが出ます。再現しませんでしょうか?)

ばっちり再現しました。エラー行番号だけでなく、その行の内容も出力した方が便利かと思い追加したのが裏目に出てしまいました。

原因はだいたい分かったのですが、ここはきちんと確認した上でアップしたいと思います。
で、あまりにも安易な対処で申し訳ないのですが、取り急ぎエラー行の内容出力をしないようにしました。

ということで v.1.25.2 です。

ttp://dmz.xrea.jp/dahlia/soft/lsrtw1252-bunta.lzh

>> ではなく、まさかの
>> >( 1)  04/09/30 01:20
>> でエラーになります。
>> これもこのダミーログに問題があるのですが、文太さんならテキストを開けばす
>> ぐに気付くと思いますのでひとまず対処方法は伏せておきます ^^;
> これ、エラーが出なくなりました(^^; ま、出たときにでも…。

あら?エラー出ないですか?
文太さんが書き込まれたダミーログをそのままコピペして動作確認したのですが、

>00002/00002 xxx00000 文太       dummy title 
>( 1)  04/09/30 01:20
>
>00002/00002 xxx00000 文太       dummy title 
>( 1)  04/09/30 25:20

これは、テキストエディタでよく見ると、ヘッダ行の中に全角空白文字が混ざっています。

>00002/00002 xxx00000□文太□□□□□□ dummy title□
>( 1)□ 04/09/30 01:20
>
>00002/00002 xxx00000□文太□□□□□□ dummy title□
>( 1)□ 04/09/30 25:20

この□の部分です。ひとつめのヘッダ行は ID のところまでしか見ていないので影響ないのですが、その次の日付・時刻のある行は1行の文字列全部を正規表現でチェックしますので全角空白があると LOGSORT ではエラーと判定します(実際の NIFTY のログでは半角スペースになっているはずなので)。

最後に、

> 以下、変な書き方ですが、出力はそれぞれのファイルの中身です。最初、びっ
>くりした。標準出力と標準エラー出力を分けたわけですね。

元々、LOGSORT では基本的にメッセージはすべて標準エラー出力に吐き出すようになっていました(たぶん・・・)。

で、今回文太さんのご要望もあり一部標準出力へ変更したのですが、リダイレクトしてもあまり意味のないようなメッセージは出力先を変えていないのです。
もしすべて標準出力へ統一する方が便利であれば考えます。

【101】Re:LOGSORTW ver1.25.1
 Si  - 2008/10/02(木) 1:42 -

引用なし
パスワード
   konno さんのご要望、v 1.25.2 で対応させてみました(一部後退しましたが ^^;)。

ダウンロード先の URL は文太さん宛のレスを参照してください。
何か気の付いたことがあれば気軽にどうぞ。

ということでよろしくお願いします。

【102】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/02(木) 12:49 -

引用なし
パスワード
   Siさん

(niftyヘッダ1行目エラーに関して)
> これはちょっと無理なんです。

 了解です。たしかに「釈然」としませんでしたが、僕が思っているのより複雑
な処理になっているのだとは想像できました。検討ありがとうございました。
m(__)m

> > (■0Dhが出ます。再現しませんでしょうか?)
> ばっちり再現しました。

 欲張ったりすると裏目に出たりしますよね…。って知ったかぶりぶりですね、
すいません。

> ttp://dmz.xrea.jp/dahlia/soft/lsrtw1252-bunta.lzh

 落としました。 非在時刻のテストの結果は良好です。 ゴミも消えています。
「どこが駄目情報」も消えてしまってはいますが。=これは今回の仕様どおり。

> あら?エラー出ないですか?
> 文太さんが書き込まれたダミーログをそのままコピペして動作確認したのですが、
>00002/00002 xxx00000□文太□□□□□□ dummy title□
>( 1)□ 04/09/30 01:20

 わお、と思ったのですが、(間違っているかもしれませんけれど)、これ、掲
示板の「等幅」指定のゆえ、ということはないでしょうか。そんな置換をした覚
えがないのと、手元のtest.logには□がなかったのですよ。確かに掲示板の書き
込みにはばっちり入っているのですが…。
(えい、テストしてしまおう            )
カッコの最後に半角とタブを入れた。


 忘れるところだった:出力は今のままがいいです。同時に出しつつ2つに分け
るツールを見たことがなかったから、 というところですが、>で出るのはタグ・
ジャンプ情報だけで十分。無駄のない仕様!

【103】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/02(木) 12:51 -

引用なし
パスワード
   > (えい、テストしてしまおう            )
> カッコの最後に半角とタブを入れた。

 はい、掲示板の「等幅」指定が原因でした。

【104】Re:LOGSORTW ver1.25.1
 konno WEB  - 2008/10/03(金) 0:17 -

引用なし
パスワード
   Siさん

>どうもです。はじめまして、ではないような気もするのですが ^^;

う、私もそんな気もしてたんですが、記憶があいまいで・・・(^^;

>報告ありがとうございます。確認してこちらも行番号を出力するように考えます。

対応頂き、ありがとうございます。さきほどいただきました。m(__)m

【105】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/03(金) 0:30 -

引用なし
パスワード
   ▼文太さん:
> 了解です。たしかに「釈然」としませんでしたが、僕が思っているのより複雑
>な処理になっているのだとは想像できました。検討ありがとうございました。

了解頂いてありがとうございました。

>(えい、テストしてしまおう            )
>カッコの最後に半角とタブを入れた。

テキスト処理のベテランである文太さんにしては全角空白をサンプルログのヘッダ部分にいれるのは変だなぁ、とは思っていたのですが、ここの掲示板CGIの問題だったのですね。これは大変失礼致しました。

まだ、良く理解できていないのですが、「等幅」投稿の場合半角空白が連続すると全角空白文字に置き換えられてしまう、ってことですかね?

自分でもちょっと試してみます。

(    )←半角カッコ内は半角スペース8個

さて、どうなるか・・・

> 忘れるところだった:出力は今のままがいいです。同時に出しつつ2つに分け
>るツールを見たことがなかったから、 というところですが、>で出るのはタグ・
>ジャンプ情報だけで十分。無駄のない仕様!

良かったです。では以降のバージョンもこの方向で。

【106】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/03(金) 0:37 -

引用なし
パスワード
   ▼Siさん:
>(    )←半角カッコ内は半角スペース8個
>
>さて、どうなるか・・・

あら、確かに全角空白に置き換わりますね ^^;

(□□□□)←半角カッコ内は半角スペース8個

うーん、普通の書き込みなら影響ないですが、今回のようなサンプルテキスト投稿時は「等幅」は駄目ですね。一般的にこういうものなのでしょうか・・・

CGI をいじれる知識もなにもないので、これはここの掲示板の仕様ということで勘弁して下さい。

【107】Re:LOGSORTW ver1.25.2
 konno WEB  - 2008/10/03(金) 0:37 -

引用なし
パスワード
   Siさん

>konno さんのご要望、v 1.25.2 で対応させてみました(一部後退しましたが ^^;)。

早速使わせていただきました。完璧です。これでさらに便利になりました。
ありがとうございました。m(__)m

>何か気の付いたことがあれば気軽にどうぞ。

うちの掲示板CGIで出力される擬似niftyログ形式でもキチンとソートできました。
これはとてもありがたいです。

1点だけ、うちの掲示板は現在3千発言を超えているので、ログを一つに纏めると
エラーになってしまいます。3000以上の記事数に対応するのは難しいでしょうか。
あ、いや、いまのままでも充分なのですが、もしも気がむかれたなら。m(__)m

【108】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/03(金) 0:56 -

引用なし
パスワード
   ▼konnoさん:
>早速使わせていただきました。完璧です。これでさらに便利になりました。
>ありがとうございました。m(__)m

そう言って頂けると作る側としても励みになります。

>1点だけ、うちの掲示板は現在3千発言を超えているので、ログを一つに纏めると
>エラーになってしまいます。3000以上の記事数に対応するのは難しいでしょうか。
>あ、いや、いまのままでも充分なのですが、もしも気がむかれたなら。m(__)m

確かに上限は 3000 に設定しています。この上限値は DOS版と同じにしているのですが、 制限のあるDOS(確か 32KB だったかな) と違って Windows 上だとプログラム上からもかなりのメモリが使えたかと思いますし、上限値 を変えるのはコードを1行書き換えるだけなのでほとんど手間もかからないです。

ただし、増やした上限値できちんと動作するのか?という不安もありますので、あくまでテスト版として試して頂けるなら用意出来ます。

とりあえずどのくらいあれば良いですか?

【109】Re:LOGSORTW ver1.25.2
 konno WEB  - 2008/10/03(金) 23:50 -

引用なし
パスワード
   ▼Siさん:
>ただし、増やした上限値できちんと動作するのか?という不安もありますので、あくまでテスト版として試して頂けるなら用意出来ます。

おお、うれしいです。DOS窓でどこまで動作できるか分かりませんが、
やってみたいと思います。

>とりあえずどのくらいあれば良いですか?

3千発言で役3メガほどになるので、ファイルサイズにも限界があるかと
思いますが、どうせなら1万発言程度までできたらうれしいです。
うちの掲示板があと10年続いたとしてもそこまではいかないと思います
ので。(^^;

【110】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/04(土) 10:46 -

引用なし
パスワード
   Siさん

(niftyヘッダ一行目のエラー処理について)
> 了解頂いてありがとうございました。

 いえいえ、僕の了解なんて。それでも、konno さんまで要望を出されて、過去
ログ・コレクターとしてはうれし涙ものです。

> テキスト処理のベテランである文太さんにしては全角空白をサンプルログの
> ヘッダ部分にいれるのは変だなぁ、とは思っていたのですが、

 いえいえ2。残念なことに、しょっちゅうやってるんですよ。あああ、やば、
バグ・レポートがバグってどうする! みたいに。

>  まだ、良く理解できていないのですが、「等幅」投稿の場合半角空白が連続する
> と全角空白文字に置き換えられてしまう、ってことですかね?

 ですね。タブもですが。ま、プログラム(ないしプログラムに食べてもらうデータ)
を投稿するときには、「等幅」は避けること、ってとこでしょうね。
 掲示板管理者の皆さまは苦労されているようです。m(__)m

(出力が2方向のstdout, stderrに分かれている件)
> 良かったです。では以降のバージョンもこの方向で。

 はい。すばらしい仕様です。m(__)m

【111】LOGSORTW ver1.25.3
 Si  - 2008/10/05(日) 0:50 -

引用なし
パスワード
   ▼konnoさん:
>3千発言で役3メガほどになるので、ファイルサイズにも限界があるかと
>思いますが、どうせなら1万発言程度までできたらうれしいです。

ttp://dmz.xrea.jp/dahlia/soft/lsrtw1253-konno.lzh

メッセージ数上限を 3,000 → 10,000 に拡大してみました。
それ以外は v1.25.2 のままです。
ちなみに、ファイル全体を一度に読み込むわけではないのでファイルサイズ自体はあまり影響ないです。

>うちの掲示板があと10年続いたとしてもそこまではいかないと思います
>ので。(^^;

10年先に Windows があるかどうか ^^;

【112】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/05(日) 1:09 -

引用なし
パスワード
   ▼文太さん:
>(出力が2方向のstdout, stderrに分かれている件)
>> 良かったです。では以降のバージョンもこの方向で。
>
> はい。すばらしい仕様です。m(__)m

こう云う出力方法をするコマンドラインツールってあまりないのかな?変態仕様 ^^;

^M のゴミ対策も目途が立ちましたのでそろそろ正式公開の方向に進もうかと思っています。

いま自分で気になっているのはログファイルの最後が改行なしで終わっているケースの対応です。

あいうえお[EOF]

こんなケースです。LOGSORT でソートをかけるとこの行は削除されます。
確か、air craft の分割ログの最後にこう云うパターンが出力されることがあるのですが、意味のない行なので出力しないような仕様になっています。

テキストデータをNIFTYログ形式に加工して活用されているみなさんが、最終行にちゃんと改行を入れてくれれば問題ないのですが、念のためチェックするルーチンを入れた方が良いかどうか思案してます。

文太さんや konno さんのおかげで久々のバージョンアップとなりそうですが、何かご希望とかあればいまのうちにどうぞ。あまり難題だったら次々バージョンに回しますが ^^;

【113】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/05(日) 15:29 -

引用なし
パスワード
   Siさん

>(出力が2方向のstdout, stderrに分かれている件、再び)
> こう云う出力方法をするコマンドラインツールってあまりないのかな?変態仕様 ^^;

 変態なことはないですよ。 よく考えてみれば(ちょっと調べたのですが)、
「たとえばパイプで、エラーメッセージが次への入力にならないように」 という
stderr の原理に則った正しい使い方ですよね。

>  ^M のゴミ対策も目途が立ちましたのでそろそろ正式公開の方向に進もうかと

 いいですね。

> いま自分で気になっているのはログファイルの最後が改行なしで終わっている
> ケースの対応です。

 いちおうフィルターは勝手に入力を破棄したりしてはいけませんので、許して
やってそのまま出力のほうが理想でしょう。同じようなのがsedのNコマンドにあ
ったりします。昔のsedは、最終行でNができない(次行のパターンスペースへの
追加)状況下だと、すでにあるパターンスペースを破棄する仕様でした。なので
「$!N」 (最終行でなければN)というのが慣用句でしたが、「あの、Nコマン
ドの仕様変えませんか? 」と誰かが言い出し、GNU sedでは、そうなってます。
最終行処理がスクリプト上まずくても、とりあえずパターンスペースを吐き出す
仕様、というわけです。


 で、その問題がうちで起こるかは、下のように調べました。

C:\TK\VZLOG\DC>Wild -D -R "tail -1 $f >>c:\kek" *.log
<< 環境変数対応 Wildcard 展開プログラム Ver.1.34 >>
          Copyright (c) 1996-98 by namazu & Si
DEBUG MODE:tail -1 C:\TK\VZLOG\DC\01\DC01~012.LOG >>c:\kek
DEBUG MODE:tail -1 C:\TK\VZLOG\DC\02\DC02_968.LOG >>c:\kek
DEBUG MODE:tail -1 C:\TK\VZLOG\DC\02\DC02_981.LOG >>c:\kek
(以下50行続く)

 これがうまくいってる瞬間といったらシアワセの一言。 「tail -1」で最終行
出力です。 普通にワイルドカード使うと、(別件ですが)昔のsedと同じく、全
部の入力ファイルの最後だけを出力してしまうので意味をなさない(各ファイル
の末尾がみたいので) 。 で、ディレクトリ再帰つきワイルドカードの展開!!
機械が書いてくれるバッチファイル!! ワイルドくん、き、君はエライ! 最高!

 ああ、気持ちよかった。
 で、結論:エアクラを使った時期もあったのですが、僕の手元のログには

あいうえお[EOF]

 はなかったですね(なんやねん)。ま、これは行儀の悪いファイル管理ですから。
(^^;ゞ

> テキストデータを NIFTY ログ形式に加工して活用されているみなさんが、最終
> 行にちゃんと改行を入れてくれれば問題ないのですが、念のためチェックするル
> ーチンを入れた方が良いかどうか思案してます。

 「念のために」入れられるものなら。少なくとも捨てないで m(__)m

>  文太さんや konno さんのおかげで久々のバージョンアップとなりそうですが、
> 何かご希望とかあればいまのうちにどうぞ。

 複数会議室のログも試しました。 完璧でした。今のところ、logsortwはすでに
完成されているように見えてます。m(__)m

【114】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/06(月) 0:04 -

引用なし
パスワード
   ▼文太さん:
> いちおうフィルターは勝手に入力を破棄したりしてはいけませんので、許して
>やってそのまま出力のほうが理想でしょう。(以下略)

基本はその通りなのですが、いろいろ事情がありまして・・・

まず、例えが悪かったですね。
実際は、TTY でのNIFTY のプロンプト文字列で、例えば、

CCS(N)>[EOF]

このようなものが air craft の分割ログの最後に出力されることがあります(ました)。メッセージ本体とは関係のないいわばゴミデータなので、LOGSORT ではソート後の出力時にカットするような仕様になっているのです。

それともうひとつ。エディタのマクロなり、テキストを扱うツールなどで作られた NIFTY形式のテキストデータでも、最終行が改行なしで終わっているケースがあったとして、これをそのまま出力するとなるとおかしなことになってしまいます。

上の方であげられている文太さんのサンプルを少し変えて下のようログがあった場合、

00002/00002 XXX00000 文太       dummy title[CRLF] 
( 1)  04/09/30 01:20[CRLF]
[CRLF]
00001/00002 XXX00000 文太       dummy title[CRLF] 
( 1)  04/09/30 25:20[EOF]

後のメッセージの方が番号が若いですから、「そのまま出力」する仕様で LOGSORT でソートをかけると、

00001/00002 XXX00000 文太       dummy title[CRLF] 
( 1)  04/09/30 25:2000002/00002 XXX00000 文太       dummy title[CRLF] 
( 1)  04/09/30 01:20[CRLF]
[CRLF]

たぶんこんな風になってしまいます。これやっちゃうとログがまずいことになってしまいますよね?こうなる理由は LOGSORT では勝手に(元データに存在しない)改行コードを出力しないからです。

と云うことで、

> 「念のために」入れられるものなら。少なくとも捨てないで m(__)m

捨てたいです ^^;

やるとしたら、ひとつひとつのメッセージ本体を出力する度に、最後に改行コードが存在するかどうか判定するルーチンを追加して、なければ改行コードをアプリ側で追加出力してやる。と云う処理が必要となります。

効率悪そうなので、あまりこれはやりたくないです。

いま考えているのは、前処理としてファイルの終端を見に行って、そこが改行無しで終わっている場合に、その旨のエラーメッセージを表示して終了させる、って方向です。

> 複数会議室のログも試しました。 完璧でした。今のところ、logsortwはすでに
>完成されているように見えてます。m(__)m

ありがとうございます。

【115】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/06(月) 0:20 -

引用なし
パスワード
   Siさん

> > 「念のために」入れられるものなら。少なくとも捨てないで m(__)m
> 捨てたいです ^^;

 なるほど、なるほど、プログラムする側としては悩むわけですね。分かります
よ、僕でも。捨てましょう!

 ヘッダが2行でそのあと本文が続くというパソ通なログに固有な問題なのです
ね。誰かが何か言うかもしれませんが、僕はマクロの側でそういう状況が発生し
ないようにコーディングしておきます。細かいところまでお教えいただきありが
とうございました。そんな状況が発生しないようにするのは、「それをしておか
なくてないけない」とちゃんとインプットされていれば、訳ないことなのです。
あくまで個人的なレベルでは、ということですが。
 (手元のログではないことなのも確認済みだし…。)

 了解でーす。m(__)m


 けっこう疲れてますよね、お互い。ここまでSiさんがつき合ってくれるとは思
ってなかった。実はけっこうヘロヘロ。明日から(今日からですが)、新しい週
の始まり! ゆっくりでいいですからね。変なバグ・レポートもかつて入ってい
たわけですから。

【116】Re:LOGSORTW ver1.25.3
 konno WEB  - 2008/10/06(月) 1:17 -

引用なし
パスワード
   ▼Siさん:
>メッセージ数上限を 3,000 → 10,000 に拡大してみました。
>それ以外は v1.25.2 のままです。

いただきました。3280発言、3.2メガの処理もあっという間に終わりました。
テストのためにこのファイルを2回コピーして9840発言、9.6メガでもやって
みましたが、ほんの数秒で正常に終わりました。これはいい!! わがまま
を聞いてくださって本当にありがとうございました。m(__)m

>ちなみに、ファイル全体を一度に読み込むわけではないのでファイルサイズ自体はあまり影響ないです。

DOS窓での処理なのでこの辺が心配だったんですが、そうだったんですか。安心
しました。

>10年先に Windows があるかどうか ^^;

計算上は10年後に12000件という話もあるようですが、私の予想では5年後には
VZの話題がほぼ無くなると思ってますので、掲示板が残っていたとしても、
10000件はいかないだろうと。
OSは変わる可能性大ですが、一応10年先まではサイトを維持したいですね。

【117】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/06(月) 22:46 -

引用なし
パスワード
   Siさん

 どうでもいいメモです(すいません)。

aaaaa[EOF]
 な終端をもつファイルの最後に改行を加える方法は何がいいのかなぁ、と考え
ていて、はまりました。Vzマクロ以外です。

方法1
>lsed "p;d" file    #logos版sed、この版以外だと深くはまっちゃいます。
            #嫌なんですけど、こういうの。
方法2
>lsed "n" file        #logos版sed

方法3
>oldsed "n" file    #serow版sed

方法4
>jgawk "{print}" file    #素直、素直

方法5
>mbsed "$s/[^\n][^\n]*/&\n/" file    #Bruce.版。こんな真面目な置換は
                    #大袈裟だよ。

 そっかあ、フィルタは一般にファイル末に改行がないならそのままにしておく
ものなんですね。xtr で付かなかったのは、ちょっとびっくり。typeはさすがに
付けないだろうと思っていたのですけれど。


   ##もっといい方法ありませんか?##


 しつこいのですが、こんな場合でも複数ファイルを処理しようと思ったら、

C:\KKKK>Wild -D "lsed \"p;d\" $f >$b" t*.txt
<< 環境変数対応 Wildcard 展開プログラム Ver.1.34 >>
          Copyright (c) 1996-98 by namazu & Si
DEBUG MODE:lsed "p;d" C:\KKKK\T1.TXT >T1
DEBUG MODE:lsed "p;d" C:\KKKK\T2.TXT >T2

 とやるのが吉なわけです。いいねぇ、ワイルド。m(__)m

【118】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/07(火) 23:15 -

引用なし
パスワード
   mbsed "$s/$/\n/" file        #ファイル末に改行文字が2つあっても
                #別にいいじゃん、という大らかな人向け。
                #たぶん最速。

【120】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/08(水) 1:13 -

引用なし
パスワード
   ▼文太さん:
> けっこう疲れてますよね、お互い。ここまでSiさんがつき合ってくれるとは思
>ってなかった。実はけっこうヘロヘロ。明日から(今日からですが)、新しい週
>の始まり! ゆっくりでいいですからね。変なバグ・レポートもかつて入ってい
>たわけですから。

これで一時休戦かと思わせながら、、

>aaaaa[EOF]
> な終端をもつファイルの最後に改行を加える方法は何がいいのかなぁ、と考え
>ていて、はまりました。Vzマクロ以外です。

と、文太さんのタフぶりには何と言っていいものやら ^^;

ハードディスクの中ををひっくり返してやっと sed を探し出して試してみました。

>>lsed "p;d" file    #logos版sed、この版以外だと深くはまっちゃいます。

これが通りましたからうちにあるのは logos版 のようです。

SED   Ver2.42l    Jun 17 1992
1992/06/17 11:00      25,108 sed.exe

> そっかあ、フィルタは一般にファイル末に改行がないならそのままにしておく
>ものなんですね。xtr で付かなかったのは、ちょっとびっくり。typeはさすがに
>付けないだろうと思っていたのですけれど。

xtr も引っ張り出して試してみました。文太さんなら既にご存じかと思いますが、

xtr -nn -nz -o=hoge.txt foo.txt

こんな感じですかね。これなら sed の方が簡潔で良いのかな?

昔々に「MS‐DOSテキストデータ料理学」とかいう本を買い込んで awk とか sed とか触っていた時期があったのですが、結局使いこなせないまま今日に至っています ^^;

【121】Re:LOGSORTW ver1.25.3
 Si  - 2008/10/08(水) 1:18 -

引用なし
パスワード
   ▼konnoさん:
>いただきました。3280発言、3.2メガの処理もあっという間に終わりました。
>テストのためにこのファイルを2回コピーして9840発言、9.6メガでもやって
>みましたが、ほんの数秒で正常に終わりました。これはいい!! わがまま
>を聞いてくださって本当にありがとうございました。m(__)m

こちらこそ、わざわざテストして頂きありがとうございました。

実は、メモリ領域の確保だけなら、 10,000 どころか、100,000発言 でも 200,000発言でもいけるのが分かったのですが、さすがにそこまでは要らないですよね。

実際のデータでは試していなかったので助かりました。

【123】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/08(水) 23:20 -

引用なし
パスワード
   Siさん

>> けっこう疲れてますよね、お互い。ここまでSiさんがつき合ってくれるとは思
>>ってなかった。実はけっこうヘロヘロ。
>
>これで一時休戦かと思わせながら、、
>
>>aaaaa[EOF]
>> な終端をもつファイルの最後に改行を加える方法は何がいいのか
>
>と、文太さんのタフぶりには何と言っていいものやら ^^;

 確かに完全に相手を油断させておいてというのを狙っているとしか思えん(爆)。
 なんで作者様を油断させる必要があるんだ??? ☆\(^^;)

 ふつう、「もう忘れちゃったよ」と冷たくいなされるところなのです。m(_B_)m
 優しいお言葉にすっかりよい気持ちになってしまって、それで連続・集中砲火
的発言の数々となっております。ほんとうにすいません。深謝です。そしてマリ
アナ海溝の深みから感謝、感謝であります。m(__)m

 とにかく、どうぞゆっくりと楽しまれてください。僕に振り回されないで、と。
m(__)m 何言っているのだか、ですね。


>ハードディスクの中ををひっくり返してやっと sed を探し出して試してみました。
>>>lsed "p;d" file    #logos版sed、この版以外だと深くはまっちゃいます。
>これが通りましたからうちにあるのは logos版 のようです。
>SED   Ver2.42l    Jun 17 1992
>1992/06/17 11:00      25,108 sed.exe

 はい、それは logos 版です。serow 版からの拡張で、serow さんがオリジナ
ルから落としてしまった、 少なくはない便利なところを回復させていますので
(エンバグさせてるかも、という作者の言葉にもかかわらず)、安定していて優
秀な sed です。たとえば、コマンドを羅列させる「;」(今回使用)、スクリプ
ト先頭の unix-like な「#n」、s/LHS/RHS/n の置換時の何個目指定フラグ「n」。
この3点だけでも、 僕には serow 版に固執する意味はなくなりました(気づい
たのは、とても遅かったのですが)。
 もし総合的に dos 用の sed ということになったら、vector にある

C:\>sed --version
GNU sed version 1.18 + multi-byte extension 1.03

 がGNU拡張をもっとも最近まで追っていて、参考書どおりになりそうです。
 32ビットになると、けっこう色々と深くて…。
 (僕、sedオタクなんです。大して使えやしないのですが)

> xtr も引っ張り出して試してみました。文太さんなら既にご存じかと思いますが、
> xtr -nn -nz -o=hoge.txt foo.txt

 いえいえ、知りませんでした。調べることも出来ずじまいでいました。m(__)m
 ちゃんとそういうオプションがあるんですね。

>  nn 〔初期値:nn-〕
>  入力ファイルが改行無しで終わっている場合でも出力ファイル
> は必ず改行を付けて終わるようにします。

>  nz 〔初期値:nz-〕(No ctrl-Z)
>  出力ファイルの最後に ^Z を付けません。(通常、テキスト
> ファイル出力の場合は最後に ^Z を付けるようになっています。)

 どっかのツールのどっかのドックで、そんな処理について触れてたな、と思っ
ていたのです。XTRで外れたと思っていたので、お教えいただけて「取れた小
骨」的に本当にすっきりしました。m(__)m

> 昔々に「MS‐DOSテキストデータ料理学」とかいう本を買い込んで awk とか sed
> とか触っていた時期があったのですが、結局使いこなせないまま今日に至っています ^^;

 僕も、それ持ってます。もっとも使えるところだけ使えばいい(いざとなると
お勉強が必要になり、けっこうイライラするのですが)と開き直ってますけれど。


 因みに、XTRには以下のような関数が用意されているそうで、もうCそのも
のみたい。logsortw のソースをみて、ああ、「Cって知らなくても読める」と
か誤って思ってしまいました。「あ、XTRの関数みたいだ」とも。とはいえ、
XTRの作者、村上さんは、正規表現を使えるところまでもっていけなかった、
ここが痛いですね。

@write
入出力
 write (str)指定文字列を出力する関数

@writeln
入出力
 writeln (str)指定文字列の後に改行を付加して出力する関数

@put
入出力
 put 行バッファへの出力関数

@get
入出力
 get ()1行入力。
 get (n)指定文字数入力。

@unget
入出力
 unget (str)指定文字列を次の入力の対象とする。

【124】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/09(木) 22:09 -

引用なし
パスワード
   ▼文太さん:

> どうでもいいメモです(すいません)。

どうでもいいレスをつけさせていただきます。
つまらんもので引きずって申し訳ない。>Siさん

>方法4
>>jgawk "{print}" file    #素直、素直

方法4’
>jgawk "1" file    #ひねくれ

方法6
#include <stdio.h>
int main(){int c;
while((c=getchar())!=EOF)putchar(c);
if(c!='\n' && c!='\r' && c!='\l')putchar('\n');
}
/* LSI-Cで動作確認済み */

何やってんだか。


> とやるのが吉なわけです。いいねぇ、ワイルド。m(__)m

いや、全く。


【125】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/10(金) 18:02 -

引用なし
パスワード
   > /* LSI-Cで動作確認済み */

 ダウト!

【127】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/11(土) 12:53 -

引用なし
パスワード
   ▼文太さん:

> ダウト!

うあ〜、あと1枚だったのに〜!


まじめな話、敗因は、書き込む直前に

#include "mylib.h"

を削除してしまった事だと思います。
だよなぁ。ちょっと自信なし。
ということで、修正版。

#include <stdio.h>
int main(){int c;
while((c=getchar())!=EOF)putchar(c);
if(c!='\n' && c!=0x0d && c!=0x0a)putchar('\n');
}
/* LSI-Cで動作確認済み */

今度は大丈夫、だといいなぁ。

【128】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/11(土) 13:28 -

引用なし
パスワード
   Siさん(変な展開で、すいません)
としきさん、ありがと。うふ。


C:\>lcc addtail.c
lld @link.i

C:\>command.com /cdir addtail.exe

ADDTAIL EXE   6319 08-10-11  13:15
    1 個      6319 バイトのファイルがあります.
          957803520 バイトが使用可能です.

C:\>type test.txt
aaaaaaaaaaaaa
bbbbbbbbbbbbbbb
C:\>addtail test.txt
^C

C:\>addtail <test.txt
aaaaaaaaaaaaa
bbbbbbbbbbbbbbb
                ;ココだよん\(^_^)/
C:\>type OK.txt
/* LSI-Cで動作確認済み */    ;the first ever compling of C program!!!

C:\>type addtail.c
#include <stdio.h>
int main(){int c;
while((c=getchar())!=EOF)putchar(c);
if(c!='\n' && c!=0x0d && c!=0x0a)putchar('\n')    ;ここがいけない
}            ;のは分かってたのだけど、#include <ctype.h>
            ;でも駄目だった。ありがとうございました。
            ;読めます、だいたい。m(__)m

【138】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/19(日) 23:34 -

引用なし
パスワード
   ▼としきさん:
>if(c!='\n' && c!=0x0d && c!=0x0a)putchar('\n');

横から失礼します。

'\n' = 0x0a

じゃなかったでしたっけ?
茶々入れですみませんm(__)m

【139】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/20(月) 22:21 -

引用なし
パスワード
   ▼Siさん:

>'\n' = 0x0a
>じゃなかったでしたっけ?

そうかもしれません。
実はあのコード、何も資料を確認せずに記憶だけで書いたんですよ。
一応、LSI-CでコンパイルしてDOSで実行確認は取ったんですが、
確か、DOSとUNIXとMacで改行コードが違うという話があったなぁ、
と思い出しました。一応、ソースを載せる以上、どんな環境でも
動いてほしいけど、でも、わざわざ調べるのも面倒、ということで、
安全側に倒すという意味での妥協の産物ですね。

【140】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/20(月) 22:32 -

引用なし
パスワード
    何だか(日頃の)ご恩を仇でかえすみたいなのですが。

--------------------------------------
C:\>command.com /ctype t1
with \n

C:\>command.com /ctype t2
without \n
C:\>Lsed "n" t1
with \n

C:\>Lsed "n" t2
without \n

C:\>addtail <t1
with \n


C:\>addtail <t2
without \n

C:\>
--------------------------------------
 確かに何かバグってるみたいですね。やっぱ読めないから直せないのですが。
 仕様は「ファイルの最終行が改行文字で終わっていない場合に、改行文字を付
加する」です。どうでもいいことですいません。性格、悪いなぁ。(^^;ゞ
m(__)m

【142】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/20(月) 23:42 -

引用なし
パスワード
   > 何だか(日頃の)ご恩を仇でかえすみたいなのですが。

それは全然問題ないのですが。

> 確かに何かバグってるみたいですね。やっぱ読めないから直せないのですが。

こちらの方は大問題です。
というか、私が実験した時はそうはならなかったはず。
いや、そうならなかったような気がする。
そうならなかったんじゃないかなぁ。
何か見間違えたのかなぁ。

とりあえず、あとでもう一度実験してみます。
何を失敗したのかなぁ。
まさか、EOF?

【143】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/21(火) 13:20 -

引用なし
パスワード
    少なくともEOFが原因ではないようです。Ez-な人ですので。
 EOFって、1Aなんですね。

Ez-            ;EOF コードの付加

C:\>dump t1
00000000 77 69 74 68 20 5C 6E 0D-0A           |with \n..

【146】EOF?
 文太  - 2008/10/21(火) 14:26 -

引用なし
パスワード
   > まさか、EOF?
> while((c=getchar())!=EOF)putchar(c);

 もしかして、EOFがファイルにあることが前提なのかな?
 しかし、これって、1文字ゲットしては1文字出力し、ってやってるわけですか?

【147】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/21(火) 20:48 -

引用なし
パスワード
   > 少なくともEOFが原因ではないようです。

違います。私のソースコードの方が間違っている、ということです。
昨夜は眠かったので正しいソースコートが提示できませんでしたが、
元々のコード、EOFが来たらループから脱出、となっているのに、
脱出直後に、来たのが「EOFではない」特定のコードであったら、
という形になっています。これでは正しく動くわけがありません。
ということで、さらに修正版。

#include <stdio.h>
int main(){
int c,c2;
while((c=getchar())!=EOF){
putchar(c);
c2=c;
}
if(c2!='\n' && c2!=0x0d && c2!=0x0a)putchar('\n');
}

一応、今回もチェックしてOKである事の確認は取ったのですが、
前回もチェックOKを出したのに実はNGだったわけで。
また夢を見ているだけかもしれません。

【148】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/22(水) 10:58 -

引用なし
パスワード
   としきさん

------------------------------
C:\LSI>lcc ADDTAIL2.C
lld @link.i

C:\LSI>addtail2 <t1
with \n

C:\LSI>addtail2 <t2
without \n

------------------------------
 めでたしめでたし。

【150】ファイル末改行付加
 文太  - 2008/10/22(水) 21:18 -

引用なし
パスワード
    しつこいのですが。たぶんこれが最短。少なくともsedを使うなら。

-------------------
C:\XYZ>command.com /ctype abc
without \n
C:\XYZ>lsed "" abc   #logos版
without \n

C:\XYZ>oldsed "" abc  #serow版(たぶん他のsedでは駄目)
without \n       #bugともfeatureとも言える仕様です。

C:\XYZ>
-------------------

3 / 13 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
14,033
(SS)C-BOARD v3.8 is Free