使用sed从json中提取数字

使用sed从json中提取数字

我正在努力使用单个 sed 命令从 Linux 上的某些 json 中提取数字。给定以下块:

{
    "key1": 100,
    "key2": 200,
}

在上述情况下,我希望输出为 100,但无论其长度如何,我都需要捕获它。

到目前为止我已经得到了这个:

sed -n '/key1/ s/.*\: //p'
100,

我觉得我应该能够摆脱逗号,而无需管道到“tr”或其他什么,但我似乎无法管理它。

答案1

$ sed -e '/key1/!d' -e 's/.*\: //' -e 's/,//' testfile 
100

答案2

只需搜索数字:

$ sed -n '/key1/ s/.*\: \([0-9][0-9]*\).*/\1/p' file
100

或者

$ sed -En '/key1/ s/.*\:\s+([0-9]+).*/\1/p' file
100

就我个人而言,我会使用grep

$ grep -oP 'key1":\s*\K\d+' file
100

相关内容