BASH - tr grelines结果换行

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

回答:

你最终会得到输出,但一切都在一个。这是由于缓冲。

GNU grep有一个--line-buffered以避免输出缓冲。 tr不输入缓冲,没有明显的方式来关闭它,这样你就可以使用awk代替:

wget -r -l 1 http://overflow" title="stackoverflow">stackoverflow.com/ 2>&1 | 

grep --line-buffered -o '100%' | awk '{printf("%s ", $0);}'

100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%

回答:

它的缓冲,见Why no output is shown when using grep twice?。只需使用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 "."}' 

...........

以上是 BASH - tr grelines结果换行 的全部内容, 来源链接: utcz.com/qa/258939.html

回到顶部