Как извлечь поля из закодированного объекта JSON

Если кому-то это будет полезно, вот как я могу установить apfs -предохранитель , предложенный telcoM, в Ubuntu 16.04:

sudo apt install fuse libfuse-dev bzip2 libbz2-dev cmake g++ git libattr1-dev
git clone --recursive https://github.com/sgan81/apfs-fuse.git
cd apfs-fuse
mkdir build
cd build
cmake..

Ubuntu 16 имеет версию fusermount 2.9.4, для которой необходимо адаптировать make-файл, чтобы «изменить параметр USE _FUSE3 на OFF», как описано в файле readme.

sed -i.bak 's/USE_FUSE3:BOOL=ON/USE_FUSE3:BOOL=OFF/' CMakeCache.txt

или через графический интерфейс ncurses:

sudo apt install cmake-curses-gui
ccmake.

Наконец:

make
sudo cp apfs* /usr/local/bin/

Для монтажа:

apfs-fuse /dev/$diskpart $mountpoint

И fusermount -u $mountpointспешиться.

Обратите внимание, что -он читается только сейчас.

0
13.10.2020, 11:42
1 ответ

Если вы попытаетесь

jq -r '.' file.json

вы увидите, что нет имени и фамилии, только телефон.

{
  "message": "{\"_\":\"user\",\"pFlags\":{\"contact\":true},\"flags\":2167,\"id\":95384129,\"access_hash\":\"780828213343231334\",\"first_name\":\"xaa\",\"last_name\":\"xz\",\"phone\":\"989123930793\",\"photo\":{\"_\":\"userProfilePhoto\",\"photo_id\":\"409671715068685579\",\"photo_small\":{\"_\":\"fileLocation\",\"dc_id\":4,\"volume_id\":\"455930331\",\"local_id\":281464,\"secret\":\"3283911659027961987\"},\"photo_big\":{\"_\":\"fileLocation\",\"dc_id\":4,\"volume_id\":\"455930331\",\"local_id\":281466,\"secret\":\"3533047346646019161\"}},\"status\":{\"_\":\"userStatusLastMonth\"}}",
  "phone": "989123930793",
  "@version": "1",
  "typ": "tg_contacts",
  "access_hash": "780828213343231334",
  "id": 95384129,
  "@timestamp": "2020-01-26T13:53:31.091Z",
  "path": "/home/user/mirror2/users_5d3de570e549953b6163eb0f.log",
  "type": "redis",
  "flags": 2167,
  "host": "ubuntu",
  "imported_from": "tg"
}

Поля, которые вы ищете, находятся в .message, которая представляет собой строку, закодированный объект JSON .

jqимеет встроенную функцию fromjson, которую вы можете использовать и получить как JSON:

jq -r '.message | fromjson | [.first_name,.last_name,.phone]|@csv' file.json
"xaa","xz","989123930793"
2
18.03.2021, 22:57

Теги

Похожие вопросы