Shell / awk,获取第1列和第2列,运行curl链接,将结果分配给第3列

时间:2018-06-03 14:18:52

标签: shell awk

我是Shell和awk的新手。我有以下数据:

ID Lat Lon
1  20  110
2  30  120

我想让lat和很长时间调用API来获取该位置的城市。 我的想法是在我到达城市后让LatLoncurl http://.....lat&long=LAT,LONG...,然后将其分配到第4列。

我试过了代码:

cat $FILENAME | head -1 | awk '{LAT=$9; LONG=$10} {LINK="$LINK_a$LAT$LINK_b$LONG$LINK_c$APIKEY}'

LINK_aLINK_bLINK_cAPIKEY是链接的一些未更改的字符串。我的代码可以返回正确的LINK字符串,但我如何curl此链接并将返回城市分配给我的文件?

1 个答案:

答案 0 :(得分:1)

根据您的陈述,不完全确定您的问题,请您试试,然后让我知道吗?

while read first second
do
   if [[ $first != "ID" ]]
   then
     value=$(your curl command $first $second values.)
     if [[ -n "$value" ]]
     then
         echo "$first $second $value"
     else
         echo "No value for 3rd column here."
     fi
   fi
done < "Input_file" 

上面将从Input_file的第1行开始获取每行的变量,并通过获得当前行的第1和第2个字段来运行curl命令(因为循环将逐行遍历所有行)。此外,如果curl命令有一些输出值存储到名为value的变量中,那么它只会打印3列(您也可以根据您的要求将它们放在输出文件中)。 / p>

如果这不符合您的要求,请在帖子中发布更多样本,并附上更多解释。