【发布时间】:2017-01-27 07:49:02
【问题描述】:
我正在尝试制作一个类似 awk 的工具,该工具使用 Rebol 3 来处理带有 bash 管道和工具的更大文本文件。我在 Rebol 3 中逐行读取 STDIN 时遇到问题?
例如,这个 shell 命令产生 3 行:
$ (echo "first line" ; echo "second line" ; echo "third line" )
first line
second line
third line
但是 Rebol 的 input 字会同时读取所有 3 行。如果您以交互方式使用输入,我希望它停止在换行符处。
r3 --do 'while [ x: input ] [ if empty? x [ break ] print x print "***" ]'
abcdef
abcdef
***
blabla
blabla
***
但是当我一起运行它时,它会一次读取整个输入。我可以一次阅读所有内容并分成几行,但我希望它以“流式”方式工作,因为我通常 cat 在许多 1000 行中。
$ (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
***
我还查看了 input 的来源以制作类似的功能。我可以在 while 循环中读取每个字符的字符并检查 newlines 但这似乎效率不高。
【问题讨论】: