Joe*_*oel 4 bash shell sed pipe
我在通过sed管道时遇到了麻烦.一旦我将输出管道输出到sed,我就无法在其他地方输出sed的输出.
wget -r -nv http://127.0.0.1:3000/test.html
Run Code Online (Sandbox Code Playgroud)
输出:
2010-03-12 04:41:48 URL:http://127.0.0.1:3000/test.html [99/99] -> "127.0.0.1:3000/test.html" [1]
2010-03-12 04:41:48 URL:http://127.0.0.1:3000/robots.txt [83/83] -> "127.0.0.1:3000/robots.txt" [1]
2010-03-12 04:41:48 URL:http://127.0.0.1:3000/shop [22818/22818] -> "127.0.0.1:3000/shop.29" [1]
Run Code Online (Sandbox Code Playgroud)
我通过sed管道输出以获得一个干净的URL列表:
wget -r -nv http://127.0.0.1:3000/test.html 2>&1 | grep --line-buffered -v ERROR | sed 's/^.*URL:\([^ ]*\).*/\1/g'
Run Code Online (Sandbox Code Playgroud)
输出:
http://127.0.0.1:3000/test.html
http://127.0.0.1:3000/robots.txt
http://127.0.0.1:3000/shop
Run Code Online (Sandbox Code Playgroud)
我想将输出转储到文件,所以我这样做:
wget -r -nv http://127.0.0.1:3000/test.html 2>&1 | grep --line-buffered -v ERROR | sed 's/^.*URL:\([^ ]*\).*/\1/g' > /tmp/DUMP_FILE
Run Code Online (Sandbox Code Playgroud)
几秒钟后我中断了这个过程并检查了文件,但它是空的.
有趣的是,以下产生没有输出(与上面相同,但通过cat输出sed输出):
wget -r -nv http://127.0.0.1:3000/test.html 2>&1 | grep --line-buffered -v ERROR | sed 's/^.*URL:\([^ ]*\).*/\1/g' | cat
Run Code Online (Sandbox Code Playgroud)
为什么我不能将sed的输出传输给像cat这样的另一个程序?
| 归档时间: |
|
| 查看次数: |
5230 次 |
| 最近记录: |