Как в txt файле оставить только 2 строчки после определенного слова выше?
Есть txt файл , вот его содержимое:
===============
f fgyuf
с Scryptics
s Nartelis19
rhvrihvieg445gv54vuv
===============
gk qwerty gfhfg
с h5vvh5vh5vh5
s bj65v54gc4g
gdfgdsggrsgdg433
===============
dgf ffrffef
c c4ccf4cf4cf4fc4
s Ugniukas1
v4gv4v5g4g4vg5v4
===============
gk qwerty kfefdf
c vg545v4gv45gv5g4v5g4
s jb6jb6jb6j
g4g4vv4gv4gvg4
===============
gtth vdvfv gtggg
c vg4vg45v45gvg4545vgv45g
s v454vgv545v4gvg45
v4gg4vvg4g4vvg4vg45vg45vg4545vg
===============
fvdver 443342
c cffx2sx2xs2xs2
s xe332xd23f4v5gh5b6
445vgv45gv45gv45gv45g45vg
===============
Вопрос: Как джаваскриптом оставить только 2 строчки которые идут после строчки, в которой есть "фраза": gk qwerty ?
И эти две строчки поставить через двоеточие?
Должно остаться в txt файле вот так:
с h5vvh5vh5vh5:s bj65v54gc4g
c vg545v4gv45gv5g4v5g4:s jb6jb6jb6j
Ответы (2 шт):
Автор решения: DiD
→ Ссылка
let text = `===============
f fgyuf
с Scryptics
s Nartelis19
rhvrihvieg445gv54vuv
===============
gk qwerty gfhfg
с h5vvh5vh5vh5
s bj65v54gc4g
gdfgdsggrsgdg433
===============
dgf ffrffef
c c4ccf4cf4cf4fc4
s Ugniukas1
v4gv4v5g4g4vg5v4
===============
gk qwerty kfefdf
c vg545v4gv45gv5g4v5g4
s jb6jb6jb6j
g4g4vv4gv4gvg4
===============
gtth vdvfv gtggg
c vg4vg45v45gvg4545vgv45g
s v454vgv545v4gvg45
v4gg4vvg4g4vvg4vg45vg45vg4545vg
===============
fvdver 443342
c cffx2sx2xs2xs2
s xe332xd23f4v5gh5b6
445vgv45gv45gv45gv45g45vg
===============`;
let strings = text.split('\n');
let res = [];
for (let i = 0, l = strings.length; i < l; i++) {
if (strings[i].indexOf('gk qwerty') > -1) {
res.push(strings[i + 1] + ':' + strings[i + 2]);
i += 2;
}
}
console.log(res.join('\n'));
Автор решения: Deonis
→ Ссылка
Как вариант, можно попробовать с помощью регулярки. Хотя, это далеко не всегда самый надёжный способ. Но меня больше волнует, учли ли вы такие ситуации, когда искомая подстрока будет располагаться, например, перед "разделительной" строкой ===============
let text = `===============
f fgyuf
с Scryptics
s Nartelis19
rhvrihvieg445gv54vuv
===============
gk qwerty gfhfg
с h5vvh5vh5vh5
s bj65v54gc4g
gdfgdsggrsgdg433
===============
dgf ffrffef
c c4ccf4cf4cf4fc4
s Ugniukas1
v4gv4v5g4g4vg5v4
===============
gk qwerty kfefdf
c vg545v4gv45gv5g4v5g4
s jb6jb6jb6j
g4g4vv4gv4gvg4
===============
gtth vdvfv gtggg
c vg4vg45v45gvg4545vgv45g
s v454vgv545v4gvg45
v4gg4vvg4g4vvg4vg45vg45vg4545vg
===============
fvdver 443342
c cffx2sx2xs2xs2
s xe332xd23f4v5gh5b6
445vgv45gv45gv45gv45g45vg
===============`;
const res = text.match(/(?<=gk qwerty[^\n]*\n)([^\n]+\n){2}/gm).map(s => s.replace(/\n/, ':')).join``;
console.log(res);
