(Название отредактировано. Исходное название: "json content: распечатывать его части как есть, части канала, чтобы получить удобочитаемые метки времени, выводимые из той же команды ")
У меня есть json похожее содержимое в файле:
{
"newState": "runnable",
"setAt": 1587421159359
}
{
"newState": "running",
"setAt": 1587421282891
}
{
"newState": "debug_hold",
"setAt": 1587422014895
}
{
"newState": "terminating",
"setAt": 1587424788577
}
{
"newState": "failed",
"setAt": 1587424796544
}
Я могу извлечь 'newState' с помощью cat timestamps.json | jq -r '.newState'
:
runnable
running
debug_hold
terminating
failed
I можно извлечь метки времени эпохи и отформатировать их в удобочитаемую форму с помощью cat timestamps.json | jq -r '.setAt' | rev | cut -c 4- | rev | perl -pe 's/(\d+)/localtime($1)/e'
:
Mon Apr 20 18:19:19 2020
Mon Apr 20 18:21:22 2020
Mon Apr 20 18:33:34 2020
Mon Apr 20 19:19:48 2020
Mon Apr 20 19:19:56 2020
Как можно объединить два выхода, чтобы результат стал
runnable Mon Apr 20 18:19:19 2020
running Mon Apr 20 18:21:22 2020
debug_hold Mon Apr 20 18:33:34 2020
terminating Mon Apr 20 19:19:48 2020
failed Mon Apr 20 19:19:56 2020
Я думаю, что я может сделать bash для l oop и ввода массива, но мне было интересно, есть ли у jq что-то, что может передать часть контента (например, время эпохи в этом случае), обработать его, а затем передать значение обратно в jq разбирать вывод.