2010-01-31 60 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

相关问题