awk - 仅在出现第二个图案时打印两个图案
问题描述
只有当人有英语科目分数时,如何才能用分数打印姓名。
换句话说,只有当第 2 个模式匹配时,才会对 2 个模式进行 grepping 并打印第一个和第二个模式。
输入:
{
"sessionId": "000001",
"name": "ABC",
"Age": "21",
"Score": {
"English": "A+",
"Mathematics": "B-",
"String Theory": "C+"
}
},
{
"sessionId": "000001",
"name": "CDE",
"Age": "21",
"Score": {
"English": "A-",
"German": "B-",
"French": "C+"
}
},
{
"sessionId": "000001",
"name": "EFG",
"Age": "21",
"Score": {
"German": "A+",
"Mathematics": "B-",
"Machine Learning": "C+"
}
},
输出
"name": "ABC",
"English": "A",
"name": "CDE",
"English": "A",
解决方案
如果您的输入实际上是一个正确的 JSON 数组而不是一个片段:
$ jq -r '.[] | select(.Score.English) | {name: .name, English: .Score.English} | @text' demo.json | sed 's/^{\|}$//g; s/,/\n/'
"name":"ABC"
"English":"A+"
"name":"CDE"
"English":"A-"
推荐阅读
- reactjs - 如何通过 withRouter 为注入的属性指定类型(typeScript)?
- database - 休眠关系问题
- java - RegEx 用于检查字符串中是否存在大写字母
- css - 如何在不使用引导程序中的 css 的情况下向 div 添加填充?
- javascript - 我想在单击按钮时将数据提交到 Cloud Firestore 文档
- asp.net - 避免在没有 AJAX 的情况下在 asp.net 中回发导致的页面刷新
- c# - 使用数据库忘记密码 asp.net
- javascript - 单击图像时Javascript未运行
- c++ - 时间复杂度差异以及如何
- javascript - 无法使用猫鼬设置 2dsphere 索引