linux - 如何在立即打印时删除流中的新行?

标签 linux shell sed wget

我想用'wget'自动脚本下载一个大文件,但是'wget'生成的'progress'太冗长了。例如:

wget --progress=dot:mega 'http://mysite/my_large_file'

因为我的文件超过1.5GByes,虽然速度非常快(>9MB/s),即使将进度样式设置为'mega',输出仍然过于冗长:

     0K ........ ........ ........ ........ ........ ........  0% 2.03M 13m16s
  3072K ........ ........ ........ ........ ........ ........  0% 3.85M 10m7s
  6144K ........ ........ ........ ........ ........ ........  0% 3.85M 9m3s
  9216K ........ ........ ........ ........ ........ ........  0% 3.89M 8m30s

但我不想完成关闭进度输出,因为它让我知道是否有任何问题。现在我使用“sed”删除点:

wget --progress=dot:mega 'http://mysite/my_large_file' 2>&1 | sed -r 's/^ *([0-9]+K)[. ]*([0-9]+%) +([0-9.]+[A-Z]) +(.*)$/<\1,\2,\3\/s,remain:\4>, /g'

输出看起来好多了:

<0K,0%,2.45M/s,remain:11m0s>,
<3072K,0%,9.13M/s,remain:6m58s>,
<6144K,0%,9.35M/s,remain:5m35s>,
<9216K,0%,9.37M/s,remain:4m54s>,
<12288K,0%,9.52M/s,remain:4m28s>,
<15360K,1%,9.42M/s,remain:4m11s>,

现在我什至想删除每行末尾的“换行”字符,这样我的自动化框架就不会丢弃任何内容。我试过'td','awk',但它们都不会立即输出。也就是说,当我使用“sed”时,它会在下载过程中输出行,但是当我使用“td”或“awk”时,我等待了很长时间但没有任何输出。我猜它会在下载完成时输出整个文档,这是没有用的。

所以我想知道是否有一种方法可以在立即输出流时删除“换行”字符。

顺便说一句,有没有办法让“wget”进度输出不那么冗长但不是“不冗长”。例如,每行每 10MB 或 20MB 打印一次,或者以我最喜欢的方式,每隔 10 秒打印一次进度。

正如评论中所建议的那样,我在这里放置了我想要的输出:

<0K,0%,2.45M/s,remain:11m0s>, <3072K,0%,9.13M/s,remain:6m58s>, <6144K,0%,9.35M/s,remain:5m35s>, <9216K,0%,9.37M/s,remain:4m54s>, <12288K,0%,9.52M/s,remain:4m28s>, <15360K,1%,9.42M/s,remain:4m11s>,

所有输出在一行。

最佳答案

除了您的 sed 之外,您只需要通过管道传输一条 tr 指令,并在末尾给出:

wget --progress=dot:mega 'http://mysite/my_large_file' 2>&1 | sed -r 's/^ *([0-9]+K)[. ]*([0-9]+%) +([0-9.]+[A-Z]) +(.*)$/<\1,\2,\3\/s,remain:\4>, /g' |tr -d '\n'

关于linux - 如何在立即打印时删除流中的新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52885077/

相关文章:

Bash Sed 查找并替换为特殊字符

linux - Apache RewriteRule 重写子目录不起作用

bash - 使用 Perl 特殊字符替换 Perl 中的变量

linux - Linux 内核模块中定义的功能可以用于内核代码吗?

bash - 在 bash 脚本中使用变量名进行编译

linux - 使用作为 bash 脚本参数传递的 glob 表达式

Git - 显示远程分支的远程名称

linux - 使用 sed 或 awk 在 linux 中删除一个单词及其下一行

linux - 如何将 elf 解释器 (ld-linux.so.2/ld-2.17.so) 构建为静态库?

linux - 如何检查是否安装了 ncurses?