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

posted @ 2022-05-03 11:52  SpongeD  阅读(472)  评论(0编辑  收藏  举报