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

관련 정보