カンマなしで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

pure(オプション)でgrepPerl準拠の正規表現を使用してください。-P

grep -Po 'USDEUR":\K.*(?=,)' file
  • \Kそれまですべてを捨てる:
  • (?=,)その後、すべてを捨てます,(含む,

答え4

別のカットアウトを追加してください。

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

関連情報