Des*_*oPR 5 bash json key uppercase jq
i'm working in a bash script i have to customize one JSON obj with jq . I have:
[
{
"NC dn": "DC=company,DC=org",
"DSA objectGUID": "df9e8712-98c5-42e4-a020-2e5218404e51",
"last attempt time": "Wed Jun 10 15:27:42 2020 CEST",
"last attempt message": "was successful",
"consecutive failures": 0,
"last success": "Wed Jun 10 15:27:42 2020 CEST",
"NTDS DN": "CN=NTDS Settings,CN=STEN0002-R2,CN=Servers,CN=TENGIZ,CN=Sites,CN=Configuration,DC=company,DC=org",
"is deleted": false,
"DSA": "TENGIZ\\STEN0002-R2"
},
{
"NC dn": "DC=company,DC=org",
"DSA objectGUID": "d5d168fd-5fc3-4afc-9acc-32c7f10d14a2",
"last attempt time": "Wed Jun 10 15:27:42 2020 CEST",
"last attempt message": "was successful",
"consecutive failures": 0,
"last success": "Wed Jun 10 15:27:42 2020 CEST",
"NTDS DN": "CN=NTDS Settings,CN=SCGPN0002-R2,CN=Servers,CN=POINTE-NOIRE,CN=Sites,CN=Configuration,DC=company,DC=org",
"is deleted": false,
"DSA": "POINTE-NOIRE\\SCGPN0002-R2"
}
]
Run Code Online (Sandbox Code Playgroud)
but i need all key with out space and uppercase with {#JSON_KEY} plus CONSECUTIVE_FAILURES value and IS_DELETED value with " " :
[
{
"{#NC_DN}": "DC=domain,DC=org",
"{#DSA_OBJECTGUID}": "df9e8712-98c5-42e4-a020-2e5218404e51",
"{#LAST_ATTEMPT_TIME}": "Wed Jun 10 15:27:42 2020 CEST",
"{#LAST_ATTEMPT_MESSAGE}": "was successful",
"{#CONSECUTIVE_FAILURES}": "0",
"{#LAST_SUCCESS}": "Wed Jun 10 15:27:42 2020 CEST",
"{#NTDS_DN}": "CN=NTDS Settings,CN=STEN0002-R2,CN=Servers,CN=TENGIZ,CN=Sites,CN=Configuration,DC=domain,DC=org",
"{#IS_DELETED}": "false",
"{#DSA}": "TENGIZ\\STEN0002-R2"
},
{
"{#NC_DN}": "DC=domain,DC=org",
"{#DSA_OBJECTGUID}": "d5d168fd-5fc3-4afc-9acc-32c7f10d14a2",
"{#LAST_ATTEMPT_TIME}": "Wed Jun 10 15:27:42 2020 CEST",
"{#LAST_ATTEMPT_MESSAGE}": "was successful",
"{#CONSECUTIVE_FAILURES}": "0",
"{#LAST_SUCCESS}": "Wed Jun 10 15:27:42 2020 CEST",
"{#NTDS_DN}": "CN=NTDS Settings,CN=SCGPN0002,CN=Servers,CN=NOIRE,CN=Sites,CN=Configuration,DC=domain,DC=org",
"{#IS_DELETED}": "false",
"{#DSA}": "POINTE-NOIRE\\SCGPN0002-R2"
}
]
Run Code Online (Sandbox Code Playgroud)
Thanks in advance
pea*_*eak 11
以下内容满足要求,且没有 的开销walk:
map(with_entries( .key |= ( gsub( " "; "_")
| ascii_upcase
| "{#\(.)}" )
| .value |= tostring))
Run Code Online (Sandbox Code Playgroud)
顾名思义,ascii_upcase仅包含大写 ASCII 字符。
谢谢@Cyrus,我找到了一个解决方案......我不认为这是非常“优雅”但有效!
cat myjsonfile.txt | jq 'walk( if type == "object" then with_entries( .key |= ( gsub( " "; "_") | ascii_upcase | "{#" + . +"}" )) else . end )'
Run Code Online (Sandbox Code Playgroud)
抱歉@Cyrus,我删除你的建议
| 归档时间: |
|
| 查看次数: |
6210 次 |
| 最近记录: |