2013-12-23 4 views
2

Я использовал Sed для захвата двух интересных значений. Теперь я хочу отправить эти два значения в качестве параметров в Curl. Я успешно завершил вывод Sed на Curl с 1 аргументом, используя xargs, однако я не могу использовать два аргумента для одной команды.

echo "value1" "value2" | локон --data 'Валу = $ 1 & valB = $ 2' http://example.com

Я застрял в теории и практике. Я не планировал использовать скрипты bash.

[Я бегу tshark, выводящий конвейер в sed, и надеюсь, что он вытолкнет этот вывод для завивки, чтобы записывать данные в удаленной БД. ]

+0

В вашем примере есть только один аргумент, упрощающий использование xargs снова. Конечно, вам придется сначала комбинировать и форматировать поток аргументов (например, с sed). – Basilevs

ответ

1

До тех пор, пока вы не ожидаете использовать Вал и valB в будущих командах, вы можете использовать read для хранения пробельных разделителей выхода из ваших покидающих команд:

$ echo foo bar | { read var1 var2 ; echo $var1 $var2 ; } 
foo bar 

Что означает, что вы можете сделать :

echo "value1" "value2" | { read a b ; curl --data 'valA=$a&valB=$b' http://example.com ; } 
0

Обратные кавычки звучат как лучший выбор, если вы не можете запустить СЭД дважды (например, вы делаете это на поток живой tshark):

curl --data $(printf "valA=%s&valB=%s" `tshark --whatever | sed -e whatever`) 
1

Предполагая, что вы можете получить СЭД на выходе что-то как .csv (Foo \ TBAR):

tshark | sed ... | parallel --colsep '\t' -q curl --data 'valA={1}&valB={2}' http://example.com 

Вы можете узнать больше о GNU Parallel по адресу: http://www.gnu.org/s/parallel/

Смотреть интро видео на http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Пройдите через учебник (man parallel_tutorial). Ваша командная строка вас полюбит.

Смежные вопросы