2010-01-31 90 views
1

我想爲通過awk處理的每個匹配行調用curl(調用REST服務)。從awk塊中調用另一個命令行應用程序

輸入文件(用冒號分隔)。例如

$ cat /tmp/input 

tiger:EN 
haiti:FR 
federer:CH 

我得到儘可能的:

awk -F':' '{print $1 "=" $2}' /tmp/input 

這恰恰印證了,我可以出正確提取列。

現在我需要調用REST服務是這樣的:

curl -XPOST -H "Content-Type: application/json" 
    -d "{ lang: EN, name: tiger }" http://server/rs/user 

是否可以寫一行代碼在awk來做到這一點,或者我應該寫一個bash腳本?

回答

3
while IFS=":" read -r lang name 
do 
    curl -XPOST -H "Content-Type: application/json" -d "{ lang: $lang, name: $name }" http://server/rs/user 
done <"file" 

或者你可以用awk以及

awk -F":" ' 
{ 
    cmd="curl -XPOST -H \042Content-Type: application/json\042 -d \042{ lang: "$2", name: "$1" }\042 http://server/rs/user" 
    system(cmd) 
} 
' file 
1

bash腳本會更簡單。將$IFS設置爲:,然後使用read