从awk块中调用另一个命令行应用程序

时间:2010-01-31 10:53:56

标签: linux command-line awk

我想为通过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脚本?

2 个答案:

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