Как заменить значение в файле JSON его значением md5 с помощью команды jq?

POSIXLY:

f1=/path/to/file_1
f2=/path/to/file_2

if [ -n "$(find -L "$f1" -prune -newer "$f2")" ]; then
    printf '%s is newer than %s\n' "$f1" "$f2"
fi

Использование абсолютного пути к файлам предотвращает ложное срабатывание, если имя файла содержит только новые строки.

В случае использования относительного пути измените команду findна:

find -L "$f1" -prune -newer "$f2" -exec echo. \;
0
18.05.2020, 14:22
1 ответ

Я создал основанный на jq инструмент на python, который имеет доступ ко всем функциям python.

$ pip install jf

С вашими данными в test.jsonl

$ jf -c --import hashlib '{data_1:.data_1, target_number: hashlib.md5(str(.target_number).encode()).hexdigest(), extra_data:.extra_data}' test.jsonl
{"data_1": 210, "target_number": "620e25e6f054992308c564cb883e4940", "extra_data": 66}
{"data_1": 0, "target_number": "f83d74be3dcb71d53263aefdf08203a9", "extra_data": 56}
{"data_1": 1712, "target_number": "56ae797ad2c16813d1a6168d28b58d89", "extra_data": 48}
{"data_1": 0, "target_number": "81394a193503036fad53b8a9d6ca2456", "extra_data": 54}
{"data_1": 53, "target_number": "6f01490a5dc694e51a69b79f7dd21c24", "extra_data": 246}

Редактировать :Или проще

$ jf -c --import hashlib 'update({target_number: hashlib.md5(str(.target_number).encode()).hexdigest()})' test.json
{"data_1": 210, "target_number": "620e25e6f054992308c564cb883e4940", "extra_data": 66}
{"data_1": 0, "target_number": "f83d74be3dcb71d53263aefdf08203a9", "extra_data": 56}
{"data_1": 1712, "target_number": "56ae797ad2c16813d1a6168d28b58d89", "extra_data": 48}
{"data_1": 0, "target_number": "81394a193503036fad53b8a9d6ca2456", "extra_data": 54}
{"data_1": 53, "target_number": "6f01490a5dc694e51a69b79f7dd21c24", "extra_data": 246}
0
30.09.2021, 08:14

Теги

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