Если объекты в массиве содержат только одну пару ключ-значение, используйте index
, чтобы получить индекс, соответствующий одному:
index({message:"Validating"})
В противном случае:
map(.message == "Validating...")|index(true)
Или используйте эту более эффективную функцию:
def find(condition):
label $out
| foreach .[] as $p (-1; . + 1
if $p | condition
then ., break $out
else empty end);
Затем используйте этот индекс для нарезки массива:
# all leading
.[0:find(.message == "Validating...")]
# all trailing
.[find(.message == "Validating..."):]
# leading three
find(.message == "Validating...") as $i | .[if $i < 3 then 0 else $i - 3 end:$i]
# trailing three
find(.message == "Validating...") as $i | .[$k:$k + 4]
# etc