この情報を含む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に複数のユーザー名がある場合は、すべてのユーザー名が印刷されます。それ以外の場合は(1つだけを希望する場合)、「+0」を削除してください。最初のユーザー名のみが印刷されます。