2010-01-31 4 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에서 한 줄을 쓸 수 있나요, 아니면 내가 떠들썩한 파티 스크립트를 작성해야합니까?

답변

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을 사용하십시오.

관련 문제