Як можна згортати вихід іншої команди


2

Я хочу передати curl вихід з awk

./jspider.sh http://www.mypage.com | grep 'resource' | awk '{print $4}' | curl OUTPUT_FROM_AWK | grep myString

Як я можу цього досягти ?!

Відповіді:


4

Використовуйте xargs.

xargs utility [argument ...]

Утиліта xargs зчитує простір, вкладку, новий рядок та розділені рядки в кінці файлу зі стандартного вводу та виконує utilityрядки як аргументи.

Параметри та варіанти більше, ніж у цій укороченій формі, звичайно.


Загальний приклад із використанням curl:

$ echo "http://www.google.com" | xargs curl
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.de/">here</A>.
</BODY></HTML>

У вашому конкретному випадку це буде виглядати приблизно так:

./jspider.sh http://www.mypage.com | grep 'resource' | awk '{print $4}' | xargs curl | grep myString

Чудово! Однак у моєму випадку це не працює. Якщо трубопровід до "xargs echo", він також не працює. Я здогадуюсь, що вихід jspider занадто швидкий або що-
небудь

У такому випадку розгляньте можливість додати запитання або створити нове запитання, що стосується вашої конкретної проблеми. У мене немає такого конкретного питання, наприклад, curl -s "http://superuser.com" | grep -E 'href="http://.*stackexchange\.com' | sed 's|^.*<a href="http://\([^"]*\)">.*$|http://\1|g' | grep -v "<" | xargs curl -s | grep "<title>"добре працює для мене. (Так, я знаю, що код надзвичайно хакі).
Даніель Бек

О мій .. Я маю розблокувати цю частину седу, щоб зрозуміти, що ти робиш, все-таки це не працює з jspider. Я почну використовувати perl зараз.
meshfields

@StephanKristyn я витягую URL-адреси з гіперпосилань, і оскільки вона працює недостатньо добре, використовуючи grep -vпотім, я видаляю всі решта з дужками тегів HTML. Просто простий приклад, який показує підхід, працює в цілому.
Даніель Бек

0

Спробуйте це, це не перевірено, але має працювати.

for a in $(./jspider.sh http://www.mypage.com | grep 'resource' | awk '{print $4}'); do curl $a | grep myString; done
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.