5

I am trying to simply replace a line in a text file using JavaScript.

The idea is:

var oldLine = 'This is the old line';
var newLine = 'This new line replaces the old line';

Now i want to specify a file, find the oldLine and replace it with the newLine and save it.

Anyone who can help me here?

Wibo Kuipers
  • 83
  • 1
  • 2
  • 11
  • 1
    Possible duplicate of [Replace a string in a file with nodejs](https://stackoverflow.com/questions/14177087/replace-a-string-in-a-file-with-nodejs) – vahdet Nov 23 '18 at 12:18

2 Answers2

15

Just building on Shyam Tayal's answer, if you want to replace an entire line matching your string, and not just an exact matching string do the following instead:

fs.readFile(someFile, 'utf8', function(err, data) {
  let searchString = 'to replace';
  let re = new RegExp('^.*' + searchString + '.*$', 'gm');
  let formatted = data.replace(re, 'a completely different line!');

  fs.writeFile(someFile, formatted, 'utf8', function(err) {
    if (err) return console.log(err);
  });
});

The 'm' flag will treat the ^ and $ meta characters as the beginning and end of each line, not the beginning or end of the whole string.

So the above code would transform this txt file:

one line
a line to replace by something
third line

into this:

one line
a completely different line!
third line
makrasnov100
  • 39
  • 1
  • 7
toakleaf
  • 909
  • 8
  • 11
5

This should do it

var fs = require('fs')
fs.readFile(someFile, 'utf8', function (err,data) {

  var formatted = data.replace(/This is the old line/g, 'This new line replaces the old line');

 fs.writeFile(someFile, formatted, 'utf8', function (err) {
    if (err) return console.log(err);
 });
});
Shyam Tayal
  • 486
  • 2
  • 13