【nexus】用curl调用服务API对输出json的处理

# systemctl status nexus


# cat /etc/systemd/system/nexus.service

# curl -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks




# curl -s -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks

# curl -s -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks | jq .items


# yum -y install jq

# yum info jq


# curl -s -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks | jq .items | awk -F '"' '{ for(i=1;i<=NF;i+=2) $i="" } {print $0 }'


# curl -s -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks | awk -F '"' '{ for(i=1;i<=NF;i+=2) $i="" } {print $0 }'



在 awk 中, $0 是整个文件所有列

awk默认是以行为单位处理文本的,对文本中的每一行都执行后面 "{ }" 中的语句。

awk中的两个术语:

记录(默认就是文本的每一行)

字段 (默认就是每个记录中由空格或TAB分隔的字符串)


$0就表示一个记录,$1表示记录中的第一个字段

一般 print $0 就是打印整行内容($0前面不需要反斜杠),print $1表示只打印每行第一个字段。


-F '"' 指定 分界符为 “

for(i=1;i<=NF;i+=2)  $i=""

NF 为最后一列,对于匹配到的奇数列,给其赋值为空 "",最终究只有以 " 为分界符的偶数列有内容输出了

{print $0 } 打印满足前面条件的所有行

最终效果是只打印出双引号内容中的字符串,相当于实现了去掉 json中的 各种其他字符。



参考


玩转Linux 文件处理工具 awk

https://segmentfault.com/a/1190000020178452


Linux生产环境上,最常用的一套“AWK“技巧

https://segmentfault.com/a/1190000021462472?utm_source=sf-related

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。