누군가가 내가 예를 들어 JSON 텍스트를 구문 분석 후 값 (45)을 얻을 수있는 방법을 제안 할 수있는 JSON 파일에서 키를 구문 분석하고 값을 얻을 수 있습니다 :사용 GREP은
....
"test": 12
"job": 45
"task": 11
.....
나는 알고 있습니다 jq 및 다른 도구와 같은 도구가 필요하지만이를 설치해야합니다.
나는 이것을 grep, awk 또는 sed 명령을 사용하여 실행시키고 싶습니다.
누군가가 내가 예를 들어 JSON 텍스트를 구문 분석 후 값 (45)을 얻을 수있는 방법을 제안 할 수있는 JSON 파일에서 키를 구문 분석하고 값을 얻을 수 있습니다 :사용 GREP은
....
"test": 12
"job": 45
"task": 11
.....
나는 알고 있습니다 jq 및 다른 도구와 같은 도구가 필요하지만이를 설치해야합니다.
나는 이것을 grep, awk 또는 sed 명령을 사용하여 실행시키고 싶습니다.
awk -F'[[:space:]]*:[[:space:]]*' '/^[[:space:]]*"job"/{ print $2 }'
sed -n 's/^[[:space:]]*"job"[[:space:]]*:[[:space:]]*//p'
json 파일의 키가 줄의 시작 부분에서 시작되는 경우는 거의 없습니다. grep/sed/awk로 간단한 작업을 할 수 있지만,''jq' ''를 강력히 추천합니다. 그것을 설치하는 것은 어렵지 않습니다 - [chepner 언급] (http://stackoverflow.com/questions/38878724/use-grep-to-parse-a-key-from-a-json-file-and-get-the) -value # comment65119527_38878724) – hek2mgl
OP는 이미'jq'를 설치할 수 없다는 말을하고 표준 UNIX 도구를 사용하는 해결책을 요구했습니다. 나는 도구를 설치할 수있는 권한이없는 많은 기계를 사용합니다. 어쩌면 그것도 OP의 경우입니다, idk. 나는 또한 뛰어 들고 무언가를 빨리해야하기 때문에 많은 기계를 사용하므로 그 이유 때문에 비표준 도구를 사용하는 솔루션을 피하는 경향이 있습니다.OP 실제 입력이 게시 한 입력 형식을 따르지 않는 경우 앞에 옵션 공백을 추가합니다. –
물론, 충분히 좋은 대화 형 해킹이 필요합니다. 그러나 스크립트 나 프로그램이 아닌 경우. OP가'jq'를 사용할 수 없다면 PHP, Python, Perl 등의 스크립트 언어를 사용할 수 있습니다. json을 처리 할 수있는 것이 거의 확실하게 설치됩니다. – hek2mgl
당신은 grep -oP
(PCRE)를 사용할 수 있습니다 :
grep -oP '"job"\s*:\s*\K\d+' file
45
\K
는 이전에 일치하는 데이터를 다시 설정하라는 위해 사용된다. 위의 명령
awk -F ':[ \t]*' '/^.*"job"/ {print $2}' filename
는 라인의 시작 부분에 "job"
이있는 라인을 일치하고 해당 라인의 second
열을 인쇄 : 당신은 단지 그것을 인쇄 할 경우, awk
를 사용
. awk 옵션 -F
은 열 구분자를 :
으로 설정하고 그 뒤에 임의의 숫자 spaces
또는 tabs
을 설정하는 데 사용됩니다. 작업에 대한 jq
같은
job_val=$(awk -F ':[ \t]*' '/^.*"job"/ {print $2}' filename)
를 사용하여 특수 도구 :이 bash는 변수 job_val
에 값을 저장하려면
는
가 있었다 당신의 file
는
[
{
"test": 12,
"job": 45,
"task": 11
}
]
처럼 보였다
아래의 물건을 사용하면 오메
jq ".[].job" file
는 file
이 집에 당신을 얻을 것이다
jq ".stuff.job" file
아래
{
"stuff" :{
.
.
"test": 12,
"job": 45,
"task": 11
.
.
}
}
처럼 보였다 당신했다.
'jq '를 설치하는 것은 그리 어렵지 않습니다. 모든 디렉토리에 복사 할 수있는 단일 이진 파일 (외부 종속성 없음)입니다. – chepner
작업에'jq'와 같은 특수한 도구를 사용하지 말고'json'은'json'에 대해'sed'입니다 – sjsam
나에게 유효한 json처럼 보이지 않습니다 :/ – sjsam