私は単一の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