【问题标题】:Using AWK to filter a complex line使用 AWK 过滤复杂的行
【发布时间】:2020-10-07 12:59:29
【问题描述】:

我是 AWK 新手,我需要将此输出中“值”字段的值保存在一个文件中

'{"extraLeveling":1,"columnNames":["count(userId)"],"values":[[13]]}'

在这种情况下,我需要 13,我如何使用 awk 来做到这一点? 我尝试了 awk -F',' '{print $4} 但我肯定做错了什么。

谢谢!

【问题讨论】:

  • 欢迎来到 SO,您能否发表您为解决自己的问题所做的努力,请编辑您的问题并让我们知道。
  • 看起来像json,你试过在上面使用jq吗?
  • 谁告诉你在这里使用'awk'? :)
  • 我考虑过使用 awk,但也许有更好的方法,我必须使用该数字在我使用 curl 发送的 json 中发送。
  • 你真的应该学习jq,但如果你绝望,echo '{"extraLeveling":1,"columnNames":["count(userId)"],"values":[[13]]}'| awk '-F[[]' '{num=$4;sub(/]]}/,"",num); print num}' 会产生13 作为输出。当您的输入中有一点点变化时,您可以指望它打破! ;祝你好运。 `

标签: unix awk command


【解决方案1】:

如果两个 ' 都不是字符串的一部分,那么我建议您使用 jq 作为您的 JSON。

jq '.values[][]' file

输出:

13

【讨论】:

    【解决方案2】:

    穷人的疑问

    ... | sed -E 's/.*"values":\[\[(.*)\]\].*/\1/'
    
    13
    

    匹配“values”键旁边方括号中的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      相关资源
      最近更新 更多