Piped Arguments:echo“value1 value2”|命令$ 1 $ 2

时间:2013-12-23 02:14:49

标签: linux curl sed command-line-arguments xargs

我用Sed来抓住两个有趣的值。现在我想将这两个值作为参数发送给Curl。我已成功使用xargs将Sed输出传递给Curl,只有一个参数,但是我无法为一个命令使用两个参数。

  
    

echo“value1”“value2”|卷曲 - 数据'valA = $ 1 & valB = $ 2 'http://example.com

  

我陷入了理论和实践的困境。我不打算使用bash脚本。

[我正在运行tshark,将输出连接到sed,并希望将该输出管道化为curl,以便在远程数据库中记录数据。 ]

3 个答案:

答案 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`)