繁体   English   中英

Shell 脚本 :: 如何在 grep 命令中放置多个过滤器

[英]Shell Script :: How to put multiple filter in grep command

我当前的脚本正在为“useraccesses”下的所有块返回“userAccessId”值。 下面我编写了脚本和后端 json 响应。 我已经过滤并获取了“useraccesses”下所有块的“userAccessId”值。

但我的实际要求是,我想获得“numberOfAccessSchedules”值大于零的“userAccessId”值。 有人可以修改我的脚本吗?

MyScript.sh

#!/bin/sh
#

export TOKEN=$(curl -k -s -d "client_id=guard-public" -d "grant_type=password" -d "username=test" -d "password=test@123" "https://10.00.00.00/auth/realms/guard/protocol/openid-connect/token" | python -c "import sys, json; print json.load(sys.stdin)['access_token']")
    
#GET UserAccess ID

#echo "GET useraccess ID for all users"

curl -k --location --request GET "https://10.00.00.00:111/guardian-restservice/v1/useraccesses?page=$i&page_size=10000" -k -H "Authorization: bearer $TOKEN" | jq | grep "userAccessId" | awk -F : {'print $2'} | sed 's/,//' >> alluseraccessId.txt

没有过滤器的后端 JSON 响应

{
  "page": {
    "currentPage": 1,
    "totalPages": 7,
    "pageSize": 10000
  },
  "useraccesses": [
    {
      "userAccessId": 918568786,
      "numberOfAccessSchedules": 2,
      "customAttributes": {},
      "networkElementUserId": ""
    },
    {
      "userAccessId": 918569013,
      "numberOfAccessSchedules": 1,
      "customAttributes": {},
      "networkElementUserId": ""
    },
    {
      "userAccessId": 918569301,
      "numberOfAccessSchedules": 0,
      "customAttributes": {},
      "networkElementUserId": ""
    },
    ...........
    ...........
    ...........
   ]
}

当前 O/P (alluseraccessId.txt)

918568786
918569013
918569301

预期的 O/P (alluseraccessId.txt)

918568786
918569013

您可以使用jq轻松提取所需的值,这是在 shell 脚本中使用 JSON 的事实上的标准实用程序。 尝试将基于正则表达式的工具应用于 JSON 或 XML 等结构化数据格式几乎总是一个坏主意。

curl ... | jq '.useraccesses[] | select(.numberOfAccessSchedules>0) | .userAccessId' >> alluseraccessId.txt

添加

918568786
918569013

到文件。

表示“对于顶级对象的useraccesses元素中的数组的每个元素,如果其numberOfAccessSchedules元素大于 0,则打印其userAccessId元素的值。”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM