Saya menemukan utas ini berguna - jadi saya pikir saya akan menambahkan jawaban untuk masalah saya sendiri.
Saya ingin mengedit file konfigurasi database (datastax cassandra) dari aplikasi node di javascript dan untuk salah satu pengaturan di file saya harus mencocokkan pada string dan kemudian mengganti baris yang mengikutinya.
Ini adalah solusi saya.
dse_cassandra_yaml='/etc/dse/cassandra/cassandra.yaml'
function replaceStringNextLine(file, searchString, newString) {
fs.readFile(file, 'utf-8', function(err, data){
if (err) throw err;
var re = "\\s+(\\-\\s(.*)?)(?:\\s|$)";
var myRegExp = new RegExp(searchString + re, "g");
var match = myRegExp.exec(data);
var replaceThis = match[1];
var writeString = data.replace(replaceThis, newString);
fs.writeFile(file, writeString, 'utf-8', function (err) {
if (err) throw err;
console.log(file + ' updated');
});
});
}
searchString = "data_file_directories:"
newString = "- /mnt/cassandra/data"
replaceStringNextLine(dse_cassandra_yaml, searchString, newString );
Setelah berjalan, ini akan mengubah pengaturan direktori data yang ada ke yang baru:
file konfigurasi sebelumnya:
data_file_directories:
- /var/lib/cassandra/data
file konfigurasi setelah:
data_file_directories:
- /mnt/cassandra/data
value
variabel?