我正在尝试使用awk类似于使用Rebol 3通过bash管道和工具处理更大文本文件的工具。在Rebol 3中,我在逐行读取STDIN时遇到问题?Rebol 3:有效地逐行读取STDIN(使awk像工具一样)
例如这个外壳命令产生3行:
$ (echo "first line" ; echo "second line" ; echo "third line")
first line
second line
third line
但雷博尔的输入字读取同时所有3条线。我期望它停在换行符,因为它会停止,如果你使用交互输入。
r3 --do 'while [ x: input ] [ if empty? x [ break ] print x print "***" ]'
abcdef
abcdef
***
blabla
blabla
***
但是当我运行它一起这一次读取整个输入。我可以一次读完所有内容并分成几行,但我希望它能够以“流式”方式工作,因为我通常在许多1000-s行中使用cat。
$ (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
***
我也看了输入的来源做出了类似的功能。我可以在的每个字符中读取字符,而循环并检查换行符,但这看起来效率不高。
约好找'读取标准输入/ lines'缓冲。但是它在MacOS(OSX)上对我没有任何作用::(而不是'block!'它返回一个34815字节的“二进制!”(直到STDIN耗尽)。NB。实际上'/ lines'和'/ string')在MacOS上不做任何事情:( – draegtun