Jq Недопустимый числовой литерал в EOF

Сzsh:

zmodload zsh/datetime
strftime -s start '%Y_%m_%d.txt' $((EPOCHSECONDS - 30*86400))
echo -E rm -i 2*.txt(e:'[[ $REPLY > $start ]]':)

Удалите echo -E, когда будете довольны.

В системе GNU и с оболочкой GNU(bash)вы можете сделать что-то похожее с:

start=$(date -d '30 days ago' +%Y_%m_%d.txt)
list=()
shopt -s nullglob
for file in 2*.txt; do
  [[ $file > $start ]] && list+=("$file")
done
if (( ${#list[@]} > 0)); then
  echo -E rm -i "${list[@]}"
fi
2
23.04.2021, 20:38
1 ответ

Эта проблема возникает из-за того, как анализируется значение e252.

Он рассматривается как показатель степени (e252 = 10^252), но для этого обозначения требуется начальное число, например 1e252 = 1x10^252. Неожиданное форматирование является причиной того, что вы получаете ошибку синтаксического анализа «Неверный числовой литерал».

Очевидно, что вы ищете строковый литерал e252, поэтому вы сможете использовать следующее для того, что вы намереваетесь:

jq '.raid.c0."e252".s0 +={"device": "/c0/e252/s0"}' < file.json

, что дает:

{
  "raid": {
    "c0": {
      "eid252": {
        "s0": {
          "device": "/c0/e252/s0"
        }
      },
      "e252": {
        "s0": {
          "device": "/c0/e252/s0"
        }
      }
    }
  }
}
8
28.04.2021, 22:51

Теги

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