如何使 grep 返回值不带逗号

如何使 grep 返回值不带逗号

我想从 json 文件中提取一个值,以便我可以处理它,我尝试使用grep '"USDEUR" currs.json' | cut -d ':' -f 2但它返回0.918695,,并且 json 文件如下所示:

{
"success":true,
"terms":"https:\/\/currencylayer.com\/terms",
"privacy":"https:\/\/currencylayer.com\/privacy",
"timestamp":1449232988,
"source":"USD",
"quotes":{
  "USDEUR":0.918695,
  "USDGBP":0.660851,
  "USDPLN":3.95815
}
}

所以我想知道如何禁用逗号以便我可以处理 USDEUR 的值

答案1

使用JSON解析器来解析JSON,例如jq:

$ jq '.quotes.USDEUR' file.json 
0.918695

答案2

有多种方法可以做到这一点。您可以通过以下任一方式传输结果

tr -d ','
cut -d',' -f1
sed -e 's/,//'

答案3

与 puregrep使用 perl 兼容的正则表达式(-P选项):

grep -Po 'USDEUR":\K.*(?=,)' file
  • \K会扔掉一切直到:
  • (?=,)会扔掉之后的所有东西,(包括,

答案4

添加另一个切口。

grep '"USDEUR" currs.json' | cut -d ':' -f 2 | cut -d',' -f 1

相关内容