从JSON文件中获取数字的更好方法(除了jq)

时间:2017-01-11 02:00:20

标签: json bash

我有这个json:

# coverage/.last_run.json
{
  "result": {
    "covered_percent": 100.0
  }
}

我想获得100键的非舍入整数(在本例中为covered_percent)。我不想使用jqrubypythonperl等,只是在标准的ubuntu安装上提供的简单的unix工具。到目前为止,我有这个:

grep -o '"covered_percent":.*[0-9]*' coverage/.last_run.json | sed 's/"covered_percent": //g' | sed 's/\.[0-9]*//g'

如何让它变得更好?

1 个答案:

答案 0 :(得分:1)

好吧,如果你真的不想使用jq,awk可能就是答案:

$ awk '/covered_percent/ {print substr($0,match($0,/[0-9]+/),RLENGTH)}' file
100

序列化grep也可以解决问题:

$ grep covered_percent file | grep -o [1-9][0-9]* | head -1 
head 99.99返回时需要

grep -o

99
99

这两种解决方案都将因输入而失败。 1,例如.9,并打印9。这可以通过在[^.]

之前加上regexen来解决 但请记住,标准Unix工具不适合处理JSON,标准Unix工具不适合处理JSON,标准Unix工具不适合处理JSON,...