Daha büyük metin dosyalarını bash boruları ve araçlarıyla işlemek için Rebol 3 kullanan bir araç gibi bir awk yapmaya çalışıyorum. Rebol 3'te STDIN hattını okuyarak bir problem yaşıyorum?Rebol 3: STDIN'i verimli bir şekilde satır satırına göre okuma (awk benzeri bir araç yapmak için)
Örneğin bu kabuk komutu 3 satırları üretir:
$ (echo "first line" ; echo "second line" ; echo "third line")
first line
second line
third line
Ama Rebol 'giriş kelime aynı anda tüm 3 satırları okur. Girişimi etkileşimli olarak kullanırsanız, durağan olarak durduğunu beklerim.
r3 --do 'while [ x: input ] [ if empty? x [ break ] print x print "***" ]'
abcdef
abcdef
***
blabla
blabla
***
Ancak hepsini bir arada yürüttüğümde, bir kerede tüm girdileri okur. Hepsini bir kerede okuyabiliyor ve satırlara bölübiliyordum, ancak 1000 satırlık bir satırda genelde kedi gibi "akış" tarzında çalışmasını istiyorum.
$ (echo "first line" ; echo "second line" ; echo "third line") \
| r3 --do 'while [ x: input ] [ if empty? x [ break ] print x print "***" ]'
first linesecond linethird line
***
Ben de benzer bir işlevi yapmak için girdi kaynağı baktı. Karakter başına numarasını döngüde okuyabilir ve satır sayısını kontrol edebilirim, ancak bu etkili görünmüyor.
İyi bulmak 'STDIN/lines' tamponlama okuyun. Ancak MacOS'ta (OSX) benim için tam olarak çalışmıyor :(Bir 'blok! 'Yerine, 34815 bayt (STDIN bitene kadar) bir' binary!' Döndürür.NB aslında '/ lines' (ve '/ string') MacOS'ta bir şey yapmıyor :( – draegtun