Curl请求和Sed查找获取指定文本
curl 的用法指南Shell使用grep和sed命令提取json数据中指定字段的值今天需要做两个定时任务,通过jenkins 定时去调用某个服务的几个接口。在获取token的接口中,返回的结果并不是所需要的那种格式,需要通过文本处理将token解析出来再带上此token 去访问另外一个接口。Curl 请求(GET)以 GET 方式请求数据curl -G -d 'url=xxx' ...
·
Shell使用grep和sed命令提取json数据中指定字段的值
今天需要做两个定时任务,通过jenkins 定时去调用某个服务的几个接口。在获取token的接口中,返回的结果并不是所需要的那种格式,需要通过文本处理将token解析出来再带上此token 去访问另外一个接口。
Curl 请求(GET)
以 GET 方式请求数据
curl -G -d 'url=xxx' http://xxx/xxx
通过 GET 的方式获取到返回的token
{
"code":0,
"message":"OK",
"data":{
"token":"xxx.xxx.xxx"
}
}
提取指定文本最终的命令
cat result.json | sed 's/,/\n/g' | grep "token" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g' | sed '1d'| sed 's/"//g'
Sed + grep 解析文本获取token
第一个sed是将 ,
换成 \n
{
"code":0
"message":"OK"
"data":{
"token":"xxx.xxx.xxx"
}
}
第二个grep 是将 token
关键字找出来,并单独列出来
"data":{"token":"xxx.xxx.xxx"}}
第三个 sed是将 :
换成 \n
"data"
{"token"
"xxx.xxx.xxx"}}
第四个sed 是删除第一行
{"token"
"xxx.xxx.xxx"}}
第五个sed是将 }
替换为空字符
{"token"
"xxx.xxx.xxx"
第六个sed是删除第一行
"xxx.xxx.xxx"
第五个sed是将 "
用空字符替换掉,最后的g的参数表示替换所有符合的引号
xxx.xxx.xxx
将token保存下来
token=(cat result.json | sed 's/,/\n/g' | grep "token" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g' | sed '1d'| sed 's/"//g')
Curl 请求(POST)
带上刚解析出来的token去访问另外一个接口
public RestApiResult saveXxx(@RequestParam String accessToken,
@RequestParam String storeId,
@RequestParam String type)
再通过curl的 post请求 就可以访问该接口了
curl -d 'storeId=xxx&accessToken='$token'&type=xxx' http://xxx/xxx
更多推荐
已为社区贡献1条内容
所有评论(0)