Linux中curl和jq使用
1.curl命令
可以通过curl进行get请求:
- -G:使用get请求
- -d:指定请求数据
- curl https://www.baidu.com 直接使用的话默认get请求
- curl -G https://www.baidu.com/
- curl -X GET https://www.baidu.com/
可以通过curl进行post请求:
- -d:指定post请求体
- curl -d 'login=1234' https://www.baidu.com #请求内容发送请求
- curl -X POST https://www.baidu.com
curl其他用法:
- 保存相应内容:curl -o tmp.html https://www.baidu.com
- 输出通信的整个过程:curl -v https://www.baidu.com
- 不输出错误和进度信息:curl -s https://www.baidu.com
(1)常见参数
- -A 设置用户代理发送给服务器
- -b cookie字符串或文件读取位置
- -c 操作结束后把cookie写入到这个文件中
- -C 断点续转
- -D 把header信息写入到该文件中
- -e 来源网址
- -f 连接失败时不显示http错误
- -o 把输出写到该文件中
- -O 把输出写到该文件中,保留远程文件的文件名
- -r 检索来自HTTP/1.1或FTP服务器字节范围
- -s 静音模式。不输出任何东西
- -T 上传文件
- -u 设置服务器的用户和密码
- -w 什么输出完成后
- -x 在给定的端口上使用HTTP代理
- -# 进度条显示当前的传送状态
(2)例子
1.请求百度的地址
curl https://www.baidu.com/
2.curl -X GET https://www.baidu.com/
3.curl -X POST https://www.baidu.com/
4.把请求的数据存入html文件中:curl -d 'user=1234' -o tmp.html https://www.baidu.com/
2.jq
用于json数据处理
(1)安装
下载安装包地址:https://github.com/stedolan/jq/releases
(2)例子
1)转换json格式,提取所有值
echo '{"a":10,"b":20}' | jq '.'
2)提取a的值
echo '{"a":10,"b":20}'|jq '.a'
3)提取数组的值
echo '[{"a":10,"b":20},{"c":30}]'|jq '.[0]'
echo '[{"a":10,"b":20},{"c":30}]'|jq '.[1]'
echo '[{"a":10,"b":20},{"c":30}]'|jq '.[-1]' #返回倒数第一个结果
echo '[{"a":10,"b":20},{"c":30}]'|jq '.[]' #返回全部结果
4)提取多个
echo '[{"a":1,"b":2}, {"c":4,"d":4}, {"e":6}]' | jq '.[0,1]'
5)数据重组成数组
echo '{"a":1,"b":2,"c":4,"d":5}' | jq '[.a,.b,.c]'
6)重组对象给f,并结合grep使用
echo '{"a":1,"b":2,"c":4,"d":5}' | jq '{"f":.b}' | grep f