我想用自定义消息过滤和替换curl错误的文本,这个脚本管道到sed工作:
URL=""
curl --create-dirs -o /home/user/test.dat $URL |& sed 's/curl/Custom message/g'
这是我得到的输出:
Custom message: no URL specified!
Custom message: try 'Custom message --help' or 'Custom message --manual' for more information
然而,当没有错误并且curl正在下载文件时,我不再得到进度表,而是我要显示它。
当前输出:
这是我在没有错误的情况下使用pipe和sed获得的输出,请注意进度表缺失
URL="http_address"
curl --create-dirs -o /home/user/test.dat $URL |& sed 's/curl/Custom error/g'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
所需的输出
这是通过在没有错误时注释掉pipe和sed获得的输出,注意显示进度表:
URL="http_address"
curl --create-dirs -o /home/user/test.dat $URL #|& sed 's/curl/Custom error/g'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12980 0 12980 0 0 711k 0 --:--:-- --:--:-- --:--:-- 0
如何过滤卷曲错误消息,但仍然可以使用进度表获得所需的输出?
我搜索了这个论坛并尝试了几种解决方案,但似乎没有任何效果。一旦你打开或grep curl stderr,就不再显示进度表了。 此外,一般来说,论坛中提出的问题是关于如何仅显示错误消息而不是显示进度表,而是我希望实现相反的目的。
答案 0 :(得分:0)
尝试使用sed -u
(或--unbuffered)。它不会等到输入结束才能处理内容。
如果不起作用,请将输出保存到| tee
的临时文件,并在流程结束后处理错误。