이 정보가 많이 포함된 API 상태의 전체 목록이 있습니다. 다른 파일이나 변수로 보낼 수 있도록 사용자 이름의 이름을 grep해야 합니다.
예를 들어:
[{"id":"1onyc4b1otgmtrmw37h83rjs9w","create_at":1542718790947,"update_at":1542728017634,"delete_at":0,"username":"ivan.ivanov","auth_data":"".
"username" 다음에 문자열을 가져와야 합니다. 결국에는 다음과 같은 문자열만 있습니다.이반 이바노프아니면 이름이 무엇이든간에.
답변1
이것이 올바른 json 문자열이라면 다음을 사용하여 구문 분석할 수 있습니다 jq
.
your_api_call | jq -r '.[]["username"]'
또는
jq -r '.[]["username"]' file
그러나 제공한 문자열은 올바른 json이 아닙니다. ]}
마지막에 오른쪽 괄호( )가 누락되어 a .
로 대체되었습니다.
jq
대부분의 패키지 관리자에서 사용할 수 있습니다. 예를 들어 다음을 사용하여 설치합니다.
sudo apt install jq
만약 당신이 어떻게든필요사용 grep
및 소유 pgrep
/ grep -P
사용 가능:
grep -Po '"username":"\K[^"]*'
답변2
다음 명령을 사용했는데 제대로 작동했습니다.
echo "[{"id":"1onyc4b1otgmtrmw37h83rjs9w","create_at":1542718790947,"update_at":1542728017634,"delete_at":0,"username":"ivan.ivanov","auth_data":""." |
sed "s/,/\n/g" |
awk -F ":" '/username/{print $NF}'
산출
ivan.ivanov
답변3
아니면 이렇게 할 수도 있어요JTC:
bash $ jtc -w'<username>l+0' your.json
"ivan.ivanov"
bash $
json에 사용자 이름이 여러 개 있는 경우 모든 사용자 이름이 인쇄됩니다. 그렇지 않으면 (한 개만 원하는 경우) "+0"을 제거하세요. 첫 번째 사용자 이름만 인쇄됩니다.