подскажите как можно быстро заменить текст с счетчиком +1

есть текст в виде

{"apartment":1,"forward_numbers":["sip:10.33.101.1"]},{"apartment":2,"forward_numbers":["sip:10.33.101.2"]},{"apartment":3,"forward_numbers":["sip:10.33.101.3"]},{"apartment":5,"forward_numbers":["sip:10.33.101.5"]},{"apartment":7,"forward_numbers":["sip:10.33.101.7"]},{"apartment":8,"forward_numbers":["sip:10.33.101.8"]},{"apartment":9,"forward_numbers":["sip:10.33.101.9"]},{"apartment":10,"forward_numbers":["sip:10.33.101.10"]}

нужно заменить 10.33.101.1 на 10.33.200.21 и так далее след 10.33.101.2 на 10.33.200.22


Ответы (1 шт):

Автор решения: SwaD

Предложу решение на javaScript

Если сможете себе поставить node.js, то вот такой короткий скрипт может менять данные

import fs from 'fs';
// Читаем файл и преобразуем его
const file = JSON.parse(`[ ${fs.readFileSync('./jsons/tst.json', 'utf8')} ]`);

const a = 200; // Заменяемое значение
const b = 20; // Добавляемое

const newFile = file.map(rec => {
  const ip = rec.forward_numbers[0].split('.'); // Разбираем IP
  ip[2] = a;
  ip[3] = Number(ip[3]) + b;
  rec.forward_numbers[0] = ip.join('.'); // Собираем строку обратно
  return rec;
})
// Записываем данные в файл
fs.writeFileSync('./jsons/tstModyfy.json', JSON.stringify(newFile).slice(1, -1));

Ниже тот же скрипт, но для наглядности работы(без чтения и записи в файл)

const file = [
  { "apartment": 1, "forward_numbers": ["sip:10.33.101.1"] },
  { "apartment": 2, "forward_numbers": ["sip:10.33.101.2"] },
  { "apartment": 3, "forward_numbers": ["sip:10.33.101.3"] },
  { "apartment": 5, "forward_numbers": ["sip:10.33.101.5"] },
  { "apartment": 7, "forward_numbers": ["sip:10.33.101.7"] },
  { "apartment": 8, "forward_numbers": ["sip:10.33.101.8"] },
  { "apartment": 9, "forward_numbers": ["sip:10.33.101.9"] },
  { "apartment": 10, "forward_numbers": ["sip:10.33.101.10"] }
];

const a = 200;
const b = 20;

const newFile = file.map(rec => {
  const ip = rec.forward_numbers[0].split('.');
  ip[2] = a;
  ip[3] = Number(ip[3]) + b;
  rec.forward_numbers[0] = ip.join('.');
  return rec;
})

console.log(newFile)

→ Ссылка