我已经使用Sed来抓住两个有趣的值。现在我想将这两个值作为参数发送给Curl。我已经成功地将Sed输出管道输出到Curl,只有一个参数使用xargs,但是我无法为一个命令使用两个参数。
echo“value1”“value2”|卷曲--data '瓦拉= $ 1 &值Valb = $ 2' http://example.com
我停留在理论和实践。我不打算使用bash脚本。
[我正在运行tshark,管道输出到sed,并希望管道输出卷曲,以便在远程数据库中记录数据。 ]
我已经使用Sed来抓住两个有趣的值。现在我想将这两个值作为参数发送给Curl。我已经成功地将Sed输出管道输出到Curl,只有一个参数使用xargs,但是我无法为一个命令使用两个参数。
echo“value1”“value2”|卷曲--data '瓦拉= $ 1 &值Valb = $ 2' http://example.com
我停留在理论和实践。我不打算使用bash脚本。
[我正在运行tshark,管道输出到sed,并希望管道输出卷曲,以便在远程数据库中记录数据。 ]
只要你不希望使用瓦拉和值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 ; }
反引号听起来就像是最好的选择,如果您不能运行sed的2倍(例如你在现场tshark的流这样做):
curl --data $(printf "valA=%s&valB=%s" `tshark --whatever | sed -e whatever`)
假设你可以得到sed将输出的东西喜欢的.csv(FOO \ TBAR):
tshark | sed ... | parallel --colsep '\t' -q curl --data 'valA={1}&valB={2}' http://example.com
你可以找到更多有关GNU并行: http://www.gnu.org/s/parallel/
关注上介绍视频http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
浏览教程(man parallel_tutorial)。你的命令行会爱你。
在你的例子中只有一个参数可以很容易地再次使用xargs。当然,你必须首先结合并格式化参数流(例如用sed)。 – Basilevs