g*******0 发帖数: 127 | 1 如果一个程序运行很长时间,期间不停有输出到屏幕上,因为使用了很多 "r" (CR符,
用作返回到同一行输出的开始),因此虽然输出很多,但只有一行,我使用了将输出
Redirect to file,想看到on processing的状态,可由于输出只有一行几乎无限长,
基本上在vim上没法看。想使用pipe line将输出处理一下再存到文件里,使用以下方法:
$ prog | sed `s/r/n/g` > output.txt
将 prog的输出通过 sed 将 CR (r) 换成 LF(n),这样r就变成了换行符n,再存到
文件中,就不会是只有一行无限长的文件了。
可是sed总是需要等到 prog将所有的输出都输出完以后才开始处理,虽然output.txt里
面存的基本上符合要求,可是我本来的目的是为了在 prog 运行的过程中查看 output.
txt,现在sed要等到prog都运行完以后才开始处理,那就没有意义了。
看sed的说明是可以处理stream strings的,可是它总是先buffer一行,然后才处理。
想问一下,怎么样才能使sed处理一行的一部分输出,然后再接着处理下一部分,而不
是需要等到读入一整行? |
m**k 发帖数: 290 | |
g*******0 发帖数: 127 | 3 Thank you very much. Will try this after the current job completed.
【在 m**k 的大作中提到】 : $prog | tr "\r" "\n"
|
g*******0 发帖数: 127 | 4 奇怪,为什么我打的backslash都不见了。mtbk回帖中的反斜杠也不见了。难道这里也
需要使用双反斜杠吗。试试 \r, \n, '\r' `\n` "\r"
【在 g*******0 的大作中提到】 : Thank you very much. Will try this after the current job completed.
|
g*******0 发帖数: 127 | 5 This works like a charm. Thank you.
【在 m**k 的大作中提到】 : $prog | tr "\r" "\n"
|