Вызвать другое приложение командной строки из блока awk - PullRequest
1 голос
/ 31 января 2010

Я хочу вызвать 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?

Ответы [ 2 ]

3 голосов
/ 31 января 2010
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 голос
/ 31 января 2010

Сценарий bash будет проще. Установите $IFS на :, а затем используйте read.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...