从进度输出中删除进度条,将其重定向到日志文件中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从进度输出中删除进度条,将其重定向到日志文件中相关的知识,希望对你有一定的参考价值。

我正在运行一个程序,它将输出进度条。我是这样的

python train.py |& tee train.log

train.log看起来如下。

这是第1行

Training ...

这是第2行

...
[000] valid: 100%|█████████████████████████████████████████████████████████████▉| 2630/2631 [15:24<00:00,  2.98 track/s]
[000] valid: 100%|██████████████████████████████████████████████████████████████| 2631/2631 [15:25<00:00,  3.02 track/s]                                                                                                              
Epoch 000: train=0.11940351 valid=0.10640465 best=0.1064 duration=0.79 days

这是第3行...

[001] valid: 100%|█████████████████████████████████████████████████████████████▉| 2629/2631 [15:11<00:00,  2.90 
[001] valid: 100%|█████████████████████████████████████████████████████████████▉| 2630/2631 [15:11<00:00,  2.89 
[001] valid: 100%|██████████████████████████████████████████████████████████████| 2631/2631 [15:12<00:00,  2.88                                                                                                   
Epoch 001: train=0.10971066 valid=0.09931737 best=0.0993 duration=0.79 days

在终端上,应该将它们视为替换自身,因此,在日志文件中,存在很多重复。因此,当我执行wc -l train.log时,它仅返回3行。但是,当我在文本编辑器中打开此5MB文本文件时,大约有20000行。

我的目标是仅获取这些详细信息:

Epoch 000: train=0.11940351 valid=0.10640465 best=0.1064 duration=0.79 days    
Epoch 001: train=0.10971066 valid=0.09931737 best=0.0993 duration=0.79 days

我的问题是:

  1. 我如何在不停止当前培训进度的情况下,从train.log的“ 3”行中提取所需的详细信息?请记住,此培训将持续进行10个以上的时期,因此我不想在编辑器中打开整个进度条。

  2. [将来,我应该如何存储我的日志文件(而不是调用python train.py |& tee train.log),以便虽然我可以在终端中看到进度条,但只将重要信息保留在文本文件中?

    ] >
  3. 编辑1:

这是文件train.log的链接

我正在运行一个程序,它将输出进度条。我这样做是这样的python train.py |&tee train.log train.log看起来如下。这是第1行的培训...这是...

答案

进度条可能已写入stderr,您可以使用tee将其与stdout一起发送到|&

另一答案

好,我已经解决了。

以上是关于从进度输出中删除进度条,将其重定向到日志文件中的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本curl在stderr上输出进度[重复]

文件上传进度条干扰控制器重定向

Unix shell输入输出重定向

xutils工具上传日志文件--使用https并且带进度条显示

NSLog() 到控制台和文件

在使用文件时截断文件 (Linux)