我有一个bash脚本,它接受查询并生成json。我希望生成新的json格式为
{ "symbols" : "my_name"
"nid" : "MyName"
}
您可以帮我修改此查询吗
QUERY='SELECT row_to_json(o) FROM (SELECT nid , nid(????) as symbols FROM batch_types ORDER BY id::integer) AS o';
echo $QUERY | psql -h localhost -U report mcore -t $@ | jq -s '.' > generated/enum/batch_type.json
我期待jq之后的一些sed为jq -s '.' | sed "..."
。
我从PostgreSQL获取数据。
示例:
sql的输出可能是`
[
{"name" : "Xml"
"symbol" : "Xml"
},
{ "name": "Java",
"symbols": "Java"
}
]
到
[
{"name" : "Xml"
"symbol" : "xml"
},
{ "name": "Java",
"symbols": "java"
}
]
答案 0 :(得分:1)
我更喜欢awk
awk 'BEGIN{RS="^$"}{print tolower($0)}' >outfile
awk [ manpage ]说:
tolower(str)
返回字符串str的副本,包含所有字符串 str中的ppercase字符翻译成它们对应的 小写的对应物。非字母字符保持不变。
修改强>
如果您尝试仅转换"符号"值为小写,请使用以下内容:
...jq -s '.' | awk '/^\{*[[:blank:]]*"symbol[s]?"[[:blank:]]*:/{
$0=tolower($0);}1'' >outfile
<强>输出强>
[
{"name" : "Xml"
"symbol" : "xml"
},
{ "name": "Java",
"symbols": "java"
}
]
带有awk-regex的 旁注: ?
最多匹配一个匹配,在这种情况下匹配symbol
或symbols
。
答案 1 :(得分:0)
我能够使用
sed -r '/symbol/ s/([a-z])([A-Z])/\1_\L\2/g' | awk '/^\{*[[:blank:]]*"symbol[s]?"[[:blank:]]*:/{ $0=tolower($0);}1'''
感谢大家的努力。