金光です。
何が原因か、これではwcさえできないという感じなのですが、
──────────────────────────────────────
//ii ストリーム
もうひとつ重要なのが、それらのコマンド同士を組み合わせたり、結果を得たりするときに活躍する文字列の流れです。Unixでは、これらのデータをパイプの中を通すように扱います。
ひとつのコマンドが結果を出すと、それがパイプの中に入り、別のコマンドがそれを受け取り、最終的に端末(コンソール)に表示されるといった具合です。
たとえば、文書fileの内容から「good」という文字列を含む行を取り出し、それをソート(ABC順などに並べ替える)して、結果を端末で見るといった場合
──────────────────────────────────────
↓
──────────────────────────────────────
ますが、それを引き出すのに、呪文をとなえるようなものです。//ii ス
トリーム もうひとつ重要なのが、それらのコマンド同士を組み合わせた
り、結果を得たりするときに活躍する文字列の流れです。Unixでは、これ
らのデータをパイプの中を通すように扱います。 ひとつのコマンドが結
果を出すと、それがパイプの中に入り、別のコマンドがそれを受け取り、
最終的に端末(コンソール)に表示されるといった具合です。 たとえば、
文書fileの内容から「good」という文字列を含む行を取り出し、それをソ
ート(ABC順などに並べ替える)して、結果を端末で見るといった場合//lst1{$
cat file1 file2 | grep good | sort -r | less//}といったコマンドラ
──────────────────────────────────────
のようになってしまいます。
ちなみに
──────────────────────────────────────
class Fold
def initialize(width)
@width = width
@str = ''
end
def puts(line, &block)
line = line.chomp
return yield(line + "\n") if line.size <= @width
line.split('').each do |c|
push(c, &block)
end
push("\n", &block)
end
private
def push(c)
if c == "\n"
yield(@str + "\n")
@str = ''
elsif @str.size + c.size > @width
yield(@str + "\n")
@str = c
else
@str.concat(c)
end
end
end
if __FILE__ == $0
fold = Fold.new(66)
while(s = gets)
fold.puts(s) { |ln| print ln }
end
end
──────────────────────────────────────
だと、getsで1行ずつはとってきてるようなのですが、なぜか
──────────────────────────────────────
chapter 1
──────────────────────────────────────
のような短い行が
──────────────────────────────────────
chap
ter 1
──────────────────────────────────────
になるなど(ところどころ)なんです。
On Tue, 4 Feb 2003 21:24:48 +0900
nobu.nakada / nifty.ne.jp wrote:
> なかだです。
>
> At Tue, 4 Feb 2003 20:49:35 +0900,
> 金光雅夫 (KANEMITSU Masao) wrote:
> > ──────────────────────────────────────
> > #! ruby -Ks
> >
> > require 'nkf'
> >
> > while (line = gets)
> > print NKF.nkf('-m0 -f66 -Ss', line.sub(/\A /s, '%%zwsp%%')).sub(/\A%%zwsp%%/, ' ')
> > print "\n"
> > end
> > ──────────────────────────────────────
> >
> > のようなプログラム(fold)で、getsが一気に全部行を読み込んでいるように
> > なります。ただし、exe版のNKFでも同じ問題が起きています。
>
> すいませんが、どういう症状なのかよく分かりません。具体的に、ど
> ういうデータに対してどういう出力になるのでしょうか。
>
> --
> --- 僕の前にBugはない。
> --- 僕の後ろにBugはできる。
> 中田 伸悦
なんか、狐につままれたようで、再起動したり、色々やってみましたが、
NKF.exeでも同様になる、ということで、NKFのなにかがあるかも、という線で
聞かせてもらいました。
M.Kanemitsu
―――――――――――――――
金光雅夫 masao-k / a-net.email.ne.jp
http://www.masao-k.net
http://isweb14.infoseek.co.jp/art/soshikon/
http://isweb15.infoseek.co.jp/computer/ruby256/
http://www.masao-k.net/tDiary/index.rb
http://www.masao-k.net/RubyBook/
〒216-0031 川崎市宮前区神木本町5-14-12
自宅: 044-877-5006
携帯: 090-2753-5292
--
"I invented the term Object-Oriented, and I can
tell you I did not have C++ in mind."
-Alan Kay