У меня проблемы с прокачкой через sed.После того, как я передал выходные данные в sed, я не могу передать вывод sed в другом месте.
wget -r -nv http://127.0.0.1:3000/test.html
Выходы:
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]
Я передаю вывод через 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'
Выходы:
http://127.0.0.1:3000/test.html
http://127.0.0.1:3000/robots.txt
http://127.0.0.1:3000/shop
Я хотел бы затем вывести вывод в файл, поэтому я делаю это:
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
Я прерываю процессЧерез несколько секунд проверьте файл, но он пуст.
Интересно, что следующий вывод не выводит (то же, что и выше, но передает вывод sed через cat):
wget -r -nv http://127.0.0.1:3000/test.html 2>&1 | grep --line-buffered -v ERROR | sed 's/^.*URL:\([^ ]*\).*/\1/g' | cat
Почемуя не могу передать вывод sed другой программе, например, cat?