![sed를 사용하여 json에서 숫자 추출](https://linux55.com/image/158972/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20json%EC%97%90%EC%84%9C%20%EC%88%AB%EC%9E%90%20%EC%B6%94%EC%B6%9C.png)
단일 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