подскажите как можно быстро заменить текст с счетчиком +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 шт):
Предложу решение на 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)