我正在努力使用单个 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