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

関連情報