grep -oP 없이 간단한 JSON 구문 분석

grep -oP 없이 간단한 JSON 구문 분석

이것은 내 JSON입니다.

{"login":"WG1118412764OA","password":"9Hv1zd74nKhYovZa"}

나는 매우 기본적인 grep을 가지고 있고, Python도 없고, Perl도 없고, 분명히 jq도 없고, awk와 sed만 있습니다.

누구든지 나를 도와줄 수 있나요?

로그인과 비밀번호 값을 쉘 변수로 가지고 있어야 합니다.

감사해요

칼 800

답변1

cut도구만 필요한 경우에는 builtin선택 사항입니다 ;-)

OLD_IFS="$IFS"
IFS='"'
set -- $(<file)
IFS="$OLD_IFS"

login=$4
password=$8

심지어:

IFS='"' read -r a b c login d e f password g < file

json입력한 비밀번호나 내부 비밀번호를 조금만 변경해도 "문제가 발생할 수 있으니 주의하세요.

json예를 들어 적절한 파서를 사용하는 것이 좋습니다 jq. 없는 경우 설치하거나 관리자에게 설치를 요청하세요. 항상 귀하의 작업에 적합한 도구를 보유하십시오!

답변2

awk, sed 및 grep뿐만 아니라 필요한 POSIX 도구가 모두 있다고 가정하면 cut다음과 같이 입력을 사용할 수 있습니다.

$ login=$(cut -d'"' -f4 file)
$ passwd=$(cut -d'"' -f8 file)
$ echo "$login"
WG1118412764OA
$ echo "$passwd"
9Hv1zd74nKhYovZa

이것이 필요한 전부가 아니라면 질문을 편집하여 적용되지 않는 경우를 포함하여 보다 대표적인 입력/출력 예제를 제공하십시오.

답변3

존재하다코멘트, 이 작업을 수행하는 시스템은 OpenWrt 라우터라고 언급했습니다. ~부터jq사용 가능OpenWrt의 경우 이를 사용하여 필요한 데이터를 추출하는 것이 좋은 생각인 것 같습니다.

eval "$(jq -r '"login=\(.login|@sh); password=\(.password|@sh)"' file)"

jq이는 두 개의 쉘 배포판을 만드는 데 사용됩니다 . 평가 시 할당은 디코딩되고 인용된 사용자 이름과 비밀번호를 두 개의 쉘 변수 login및 에 할당합니다 password.

또는 파일을 두 번 구문 분석하려는 경우:

login=$(jq -r '.login' file)
password=$(jq -r '.password' file)

관련 정보