簡體   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