Как удалить объект в файле JSON с помощью команды Linux

Давайте перепишем ваш код следующим образом:

x = 1
y = [x]
z = y * 4

myList = [z] * 3

После этого запустите следующий код, чтобы сделать все более понятным. Что делает код, в основном печатает id s полученных объектов, которые

Вернуть «идентификатор» объекта

и поможет нам идентифицировать их и проанализировать, что происходит:

print("myList:")
for i, subList in enumerate(myList):
    print("\t[{}]: {}".format(i, id(subList)))
    for j, elem in enumerate(subList):
        print("\t\t[{}]: {}".format(j, id(elem)))

И вы получите следующий результат:

x: 1
y: [1]
z: [1, 1, 1, 1]
myList:
    [0]: 4300763792
        [0]: 4298171528
        [1]: 4298171528
        [2]: 4298171528
        [3]: 4298171528
    [1]: 4300763792
        [0]: 4298171528
        [1]: 4298171528
        [2]: 4298171528
        [3]: 4298171528
    [2]: 4300763792
        [0]: 4298171528
        [1]: 4298171528
        [2]: 4298171528
        [3]: 4298171528

Итак, теперь давайте шаг за шагом. У вас есть x, который является 1, и единственным списком элементов y, содержащим x. Ваш первый шаг - y * 4, который даст вам новый список z, который в основном [x, x, x, x], т. Е. Создает новый список, который будет содержать 4 элемента, которые являются ссылками на исходный объект x. Чистый шаг очень похож. В основном вы делаете z * 3, который является [[x, x, x, x]] * 3 и возвращает [[x, x, x, x], [x, x, x, x], [x, x, x, x]] по той же причине, что и для первого шага.

0
задан Satya Ranki Reddy 24 March 2019 в 11:06
поделиться

1 ответ

В sed вы можете сделать что-то вроде:

sed -e '1,/audit number/s#audit".*#audit" : [{#' \
    -e '/audit number/,$s#"audit"\s*:##' \
    -e '{N;s#,\s*"id"#]&#;P;D}' input.txt

, что примерно означает:

  1. между строками 1 и первым «номером аудита», заменяющим А для полей аудита. .
  2. между первым «номером аудита» и концом, заменить поля B для полей аудита.
  3. используйте объединение строк, чтобы найти, [пробел] "id" и вставить ']' перед ним.

Работа с JSON с помощью строковых инструментов очень опасна, поскольку изменения в интервале и порядке, которые не имеют отношения к программам, обменивающимся JSON, испортят этот стиль анализа. Обычно лучше сделать минимальное количество исправлений, чтобы получить действительный JSON, а затем использовать обычные средства JSON на любимом языке программирования.

0
ответ дан lossleader 24 March 2019 в 11:06
поделиться
Другие вопросы по тегам:

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