pipe道参数:echo“value1 value2”| 命令$ 1 $ 2

我用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`)