Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux BASH-tr grep结果的换行符_Linux_Bash_Shell_Grep_Tr - Fatal编程技术网

Linux BASH-tr grep结果的换行符

Linux BASH-tr grep结果的换行符,linux,bash,shell,grep,tr,Linux,Bash,Shell,Grep,Tr,我有一个grep-o'100%在wget之后,所以我只收到wget完成下载的通知,屏幕上没有无用的信息。但是每个100%都打印在新的行上,我不喜欢这种洪水!那么,有没有一种方法可以通过在grep之后管道tr将换行符插入空格?我所得到的只是没有结果,每次我尝试…你最终都会得到输出,但都是一次性的。这是由于缓冲 GNUgrep有一个--行缓冲,以避免输出缓冲tr没有明显的方式关闭输入缓冲,因此您可以使用awk: wget -r -l 1 http://stackoverflow.com/ 2>

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

你最终都会得到输出,但都是一次性的。这是由于缓冲

GNU
grep
有一个
--行缓冲
,以避免输出缓冲
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% 
这是缓冲,看。只需使用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 "."}'
...........

“你最终会得到输出,但都是一次性的。”是的,我现在证实了。我没有等太久,因为有很多文件要下载,看着一个没有任何信息的屏幕是非常烦人的!您确定
--line buffered
禁用缓冲吗?
man
info
都表示“在输出上使用行缓冲”。顺便说一句,使用或不使用它都会得到相同的结果:所有
100%
仅在末尾。您是按照此处提供的命令尝试该命令,还是只是在现有命令中添加了
--line buffered
。所以我维护了我的
wget
(不是递归的,是从文件输入的),并添加了您建议的内容。不管怎样,现在我完全按照你的建议进行了测试,除了
wget
grep
之间没有断线,而且
100%
没有断线,直到我中止了这个过程,因为我花了太长时间没有任何输出,并且注意到下载在文件夹上的18个项目停止。这很奇怪,我无法复制它。如果您使用stdbuf-oL wget?我复制并执行了您编写的命令。两人都下载了18个项目,没有输出,需要取消(CTRL+C)以停止执行。我认为,随着这一过程对多个应答器的多个解决方案的重复,其他事情需要检查。您的解决方案是在哪个版本的
wget
上运行的?GNU wget 1.16.3构建于cygwin之上。我是在1.17.1上运行的,所以我更新到1.18并重试。同样的非结果。。。所以这不是罪魁祸首。也许是awk?在这里,它是由人和信息caledmawk。唯一的建议我留下的是安装gawk,对不起。