繁体   English   中英

BASH - grep结果的换行符

[英]BASH - tr newlines of grep result

wget之后我有一个grep -o '100%'管道,所以我只通知wget完成了下载,屏幕上没有无用的信息。 但每100%都印在一条新线上,我不喜欢这场洪水! 那么,有没有一种方法来tr换行符为空格,通过管道trgrep 我得到的只是没有结果,每次我都试过......

你最终会获得输出,但一次又一次。 这是由于缓冲。

GNU grep有一个--line-buffered来避免输出缓冲。 tr输入缓冲没有明显的方法将其关闭,所以你可以使用awk代替:

wget -r -l 1 http://stackoverflow.com/ 2>&1 |
    grep --line-buffered -o '100%' | awk '{printf("%s ", $0);}'
100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 

它正在缓冲,请参阅为什么在使用grep两次时没有显示输出? 只需使用awk:

$ wget -r -l 1 https://stackoverflow.com/ 2>&1 | awk 'match($0,/100%/){printf "%s ", substr($0,RSTART,RLENGTH)}'
100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%

或者可能更有用:

$ wget -r -l 1 https://stackoverflow.com/ 2>&1 | awk '/100%/{printf "."}'
...........

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM