我用Sed来抓住两个有趣的值。现在我想将这两个值作为参数发送给Curl。我已成功使用xargs将Sed输出传递给Curl,只有一个参数,但是我无法为一个命令使用两个参数。
echo“value1”“value2”|卷曲 - 数据'valA = $ 1 & valB = $ 2 'http://example.com
我陷入了理论和实践的困境。我不打算使用bash脚本。
[我正在运行tshark,将输出连接到sed,并希望将该输出管道化为curl,以便在远程数据库中记录数据。 ]
答案 0 :(得分: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)。你的命令行会爱你。
答案 1 :(得分:1)
只要您不希望在将来的命令中使用valA和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 ; }
答案 2 :(得分:0)
Backticks听起来是最好的选择,如果你不能运行sed两次(例如你在现场tshark流上这样做):
curl --data $(printf "valA=%s&valB=%s" `tshark --whatever | sed -e whatever`)