通过 bash 过滤 json - 不区分大小写

2024-03-27

我有 json 代码,需要通过属性的值对其进行过滤DNSName。过滤器必须不区分大小写。

我怎样才能做到这一点?有没有可能解决它jq?

这就是我创建 json 代码的方式:

aws elbv2 describe-load-balancers --region=us-west-2 | jq

我的未过滤源 json 代码如下所示:

{
    "LoadBalancers": [
        {
            "IpAddressType": "ipv4", 
            "VpcId": "vpc-abcdabcd", 
            "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:000000000000:loadbalancer/app/MY-LB1/a00000000000000a", 
            "State": {
                "Code": "active"
            }, 
            "DNSName": "MY-LB1-123454321.us-west-2.elb.amazonaws.com", 
            "SecurityGroups": [
                "sg-00100100", 
                "sg-01001000", 
                "sg-10010001"
            ], 
            "LoadBalancerName": "MY-LB1", 
            "CreatedTime": "2018-01-01T00:00:00.000Z", 
            "Scheme": "internet-facing", 
            "Type": "application", 
            "CanonicalHostedZoneId": "ZZZZZZZZZZZZZ", 
            "AvailabilityZones": [
                {
                    "SubnetId": "subnet-17171717", 
                    "ZoneName": "us-west-2a"
                }, 
                {
                    "SubnetId": "subnet-27272727", 
                    "ZoneName": "us-west-2c"
                }, 
                {
                    "SubnetId": "subnet-37373737", 
                    "ZoneName": "us-west-2b"
                }
            ]
        }, 
        {
            "IpAddressType": "ipv4", 
            "VpcId": "vpc-abcdabcd", 
            "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:000000000000:loadbalancer/app/MY-LB2/b00000000000000b", 
            "State": {
                "Code": "active"
            }, 
            "DNSName": "MY-LB2-9876556789.us-west-2.elb.amazonaws.com", 
            "SecurityGroups": [
                "sg-88818881"
            ], 
            "LoadBalancerName": "MY-LB2", 
            "CreatedTime": "2018-01-01T00:00:00.000Z", 
            "Scheme": "internet-facing", 
            "Type": "application", 
            "CanonicalHostedZoneId": "ZZZZZZZZZZZZZ", 
            "AvailabilityZones": [
                {
                    "SubnetId": "subnet-54545454", 
                    "ZoneName": "us-west-2a"
                }, 
                {
                    "SubnetId": "subnet-64646464", 
                    "ZoneName": "us-west-2c"
                }, 
                {
                    "SubnetId": "subnet-74747474", 
                    "ZoneName": "us-west-2b"
                }
            ]
        }
    ]
}

我现在想要一些 bash 代码来过滤此结果以获取具有 DNSName 属性值的记录MY-LB2-9876556789.us-west-2.elb.amazonaws.com,并且需要返回整个 LoadBalancer 对象作为结果。这就是我希望我的结果看起来像这样:

{
    "IpAddressType": "ipv4", 
    "VpcId": "vpc-abcdabcd", 
    "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:000000000000:loadbalancer/app/MY-LB2/b00000000000000b", 
    "State": {
        "Code": "active"
    }, 
    "DNSName": "MY-LB2-9876556789.us-west-2.elb.amazonaws.com", 
    "SecurityGroups": [
        "sg-88818881"
    ], 
    "LoadBalancerName": "MY-LB2", 
    "CreatedTime": "2018-01-01T00:00:00.000Z", 
    "Scheme": "internet-facing", 
    "Type": "application", 
    "CanonicalHostedZoneId": "ZZZZZZZZZZZZZ", 
    "AvailabilityZones": [
        {
            "SubnetId": "subnet-54545454", 
            "ZoneName": "us-west-2a"
        }, 
        {
            "SubnetId": "subnet-64646464", 
            "ZoneName": "us-west-2c"
        }, 
        {
            "SubnetId": "subnet-74747474", 
            "ZoneName": "us-west-2b"
        }
    ]
}

有谁知道该怎么做?


更新: 此解决方案有效,但不区分大小写:

aws elbv2 describe-load-balancers --region=us-west-2 | jq -c '.LoadBalancers[] | select(.DNSName | contains("MY-LB2"))'

更新: 这个解决方案似乎效果更好:

aws elbv2 describe-load-balancers --region=us-west-2 | jq -c '.LoadBalancers[] | select(.DNSName | match("my-lb2";"i"))'

但我还没有机会详细测试。


你可能应该使用test/2而不是match/2,但无论哪种情况,由于问题描述要求 不区分大小写的相等,您可以使用锚定的正则表达式:

.LoadBalancers[]
| select(.DNSName | test("^my-lb2-9876556789.us-west-2.elb.amazonaws.com$";"i"))

需要注意的是ascii_upcase只翻译 ASCII 字符,使用它可能会更有效:

 .LoadBalancers[]
 | select(.DNSName | ascii_upcase == "MY-LB2-9876556789.US-WEST-2.ELB.AMAZONAWS.COM")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 bash 过滤 json - 不区分大小写 的相关文章

随机推荐

  • 使用 jQuery 获取网站信息

    使用 jQuery 有没有办法获取网站信息 可能是元数据和图像 我想要完成的一个例子是 当我在 Facebook 上分享链接时 它会提取相关图像并显示网站 文章 中的文本简介 有没有办法使用 jQuery 使用 ajax 轻松完成此任务 好
  • Typo3 在特定页面的 body 标签中添加类

    我试图弄清楚如何有条件地将类添加到特定页面的正文标记 我试图通过typoscipt 来做到这一点 但一直无法弄清楚 也许有更好的方法来做到这一点 该网站使用的是 Typo3 版本 4 4 6 我试过这个没有用 page 4 bodyTag
  • Rails 中的范围和范围

    有人可以解释一下这个方法的作用以及我可以传递给它什么吗 scoped options nil Returns an anonymous scope 那么作用域方法的作用是什么 读完文档后我不明白 在 ActiveRecord 中 所有查询构
  • 有没有办法以编程方式测试浏览器 GPU 加速?

    我想在我当前正在开发的网站上添加一些 花里胡哨 的功能 但我不想让我的用户陷入整个机器的困境 有没有办法可以测试当前浏览器是否支持 GPU 加速 我可以只检查 UserAgents 但我总是听说它不够准确 无法信任 我想我可以构建一个画布元
  • 禁用 Java ImageIO 色度子采样

    我正在尝试使用 ImageIO 将 BufferedImage 保存为 JPEG 但即使使用 100 质量进行保存 我也会因色度子采样而遭受质量损失 我通过恢复到旧的 JAI 库并明确将水平和垂直子采样设置为 1 成功解决了这个问题 然而
  • 尝试通过 SMTP 发送邮件。没有邮件到达并且没有异常错误

    问题 制作了一个小型邮件程序 该程序在我的开发人员电脑上完美运行 但在投入生产时却失败了 protected void Page Load object sender EventArgs e string smtpHost Configur
  • ComponentDidMount() 中 Axios 请求的 Jest/Enzyme 单元测试

    我正在尝试使用 Jest 和 Enzyme 对现有的 React 应用程序执行一些单元测试 我对这些东西完全陌生 准确地说 我不知道如何处理此类测试场景 我知道要测试 API 请求调用 我必须执行一些 模拟 但我应该如何为此编写测试 需要遵
  • 在 Android 中滚动屏幕时,列表视图中的切换按钮会失去状态

    我有一个列表视图 其中每个数据都是从列表适配器获取的 列表视图中的每个项目都包含一个文本视图和切换按钮 但是当我滚动列表时出现问题 切换按钮的选中状态会发生变化 即如果我选择了索引 4 处的切换按钮 那么滚动后我发现除了第四个按钮之外的任何
  • css - 缩小父级 div 以适合一个子级的宽度并限制另一个子级的宽度[重复]

    这个问题在这里已经有答案了 假设一个父 div 有两个子 div 一个包含文本 另一个包含已知 但可变 宽度和高度的图像 我想 第一个子 包含图像 div 的宽度缩小以适应图像的宽度 我可以这样做 父 div 未指定宽度 缩小以适应包含图像
  • 如何使用 Go 编程语言从 PEM 文件读取的 RSA 私钥进行加密?

    如何在 go 中执行与以下 C 代码等效的操作 RSA key PEM read RSAPrivateKey f NULL NULL NULL std vector
  • C# - 使用 Linq 选择 XML 后代

    我有以下 XML 结构
  • 如何将异步操作与 .NET 4 中的任务并行库链接起来?

    我正在尝试以编程方式链接 C 4 中的异步操作 例如写入给定的 Stream 对象 我最初是 手动 完成此操作 将回调从一个操作挂钩到下一个操作 但我想我应该尝试使用 NET 4 任务并行库来省去重新发明并发轮的麻烦 首先 我将异步调用包装
  • 使用正则表达式分割不同长度的字符串

    我不知道使用正则表达式是否可以实现这一点 我只是问一下是否有人知道答案 我有一个string hellohowareyou 我需要像这样分割它 h el loh owar eyou 分割完成后 第一个字符串的长度为 1 第二个字符串的长度为
  • ios6 uilabel 文本未居中对齐

    我正在开发一个最低版本为 ios 5 的 ios 应用程序 我刚刚遇到了 uilabels 的一个奇怪问题 或者也许我错过了一些明显的东西 不管怎样 我遇到的问题是我有一个 uilabel 它的文本要居中对齐 在 ios 5 上一切正常 但
  • 使用 Cloudformation 的 AWS Api Gateway 代理资源?

    我正在尝试从 API 网关端点代理配置为网站的 S3 存储桶 我使用控制台成功配置了端点 但无法使用 Cloudformation 重新创建配置 经过大量的试验 错误和猜测 我想出了以下 CF 堆栈模板 它让我非常接近 Resources
  • PHP / PDO:SQl 查找包含字符串值的行[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我尝试发出请求来查找包含特定字符串值的行 这是我的代码的摘录 Getting motscles value motscles PO
  • 替换 DataFrame 索引中的 NaN

    我有一个数据框 如下所示 one two a 2 5 b 3 6 NaN 0 0 如何用字符串替换索引中的 NaN 例如 无标签 I tried df df replace np NaN No label and df index df i
  • 从嵌套 javascript 对象中删除属性的最佳方法是什么?

    我有一个树对象 如下所示 我尝试删除 items 数组属性 如果它为空 我不确定执行此操作的最佳方法是什么 我正在考虑循环遍历密钥 检查属性 然后删除使用delete myJSONObject prop 欢迎任何想法 想法吗 text Tr
  • 使用.Net MVC,如何列出播放不同文件的多个html音频播放器?

    我和我的朋友正在使用 Net 开发一个大学项目 我们正在尝试建立一个网站 允许用户以类似于 Soundcloud 等网站的方式收听音频剪辑 目前 我们有一个基本的 MVC 站点 允许用户将音频上传到服务器文件系统 并在数据库表中记录有关该文
  • 通过 bash 过滤 json - 不区分大小写

    我有 json 代码 需要通过属性的值对其进行过滤DNSName 过滤器必须不区分大小写 我怎样才能做到这一点 有没有可能解决它jq 这就是我创建 json 代码的方式 aws elbv2 describe load balancers r