이것은 내 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)