我已經使用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