我用Sed来抓住两个有趣的值。 现在我想把这两个值作为参数发送给Curl。 我已经成功地将Sed输出pipe道输出到Curl,只有一个参数使用xargs,但是我无法为一个命令使用两个参数。
回声“值1”“值2”| curl –data'valA = $ 1 &valB = $ 2'http: //example.com
我被困在理论和实践中。 我不打算使用bash脚本。
[我正在运行tshark,pipe道输出到sed,并希望pipe道输出curl,以便在远程数据库中logging数据。 ]
只要你不打算在将来的命令中使用valA和valB,你可以使用read
来存储你的退出命令的空格分隔输出:
$ echo foo bar | { read var1 var2 ; echo $var1 $var2 ; } foo bar
这意味着你可以这样做:
echo "value1" "value2" | { read ab ; curl --data 'valA=$a&valB=$b' http://example.com ; }
假设你可以得到sed输出类似.csv(foo \ tbar)的东西:
tshark | sed ... | parallel --colsep '\t' -q curl --data 'valA={1}&valB={2}' http://example.com
你可以在http://www.gnu.org/s/parallel/找到更多关于GNU Parallel的信息。
请观看http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1上的介绍视频
浏览教程(man parallel_tutorial)。 你的命令行会爱你。
反驳听起来像是最好的选择,如果你不能运行sed两次(例如你正在做一个现场tshark流):
curl --data $(printf "valA=%s&valB=%s" `tshark --whatever | sed -e whatever`)