我想为通过awk处理的每个匹配行调用curl(调用REST服务)。
输入文件(以冒号分隔)。 e.g。
$ 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脚本?
答案 0 :(得分: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 :(得分:1)
bash脚本会更简单。将$IFS
设置为:
,然后使用read
。