Bu konuyu faydalı buldum - bu yüzden cevabı kendi problemime ekleyeceğimi düşündüm.
JavaScript'teki bir düğüm uygulamasından bir veritabanı yapılandırma dosyasını (datastax cassandra) düzenlemek ve dosyadaki ayarlardan biri için bir dizeyle eşleşmek ve ardından onu izleyen satırı değiştirmek istedim.
Bu benim çözümümdü.
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 );
Çalıştırdıktan sonra, mevcut veri dizini ayarını yenisiyle değiştirecektir:
config dosyası önce:
data_file_directories:
- /var/lib/cassandra/data
sonra yapılandırma dosyası:
data_file_directories:
- /mnt/cassandra/data
value
değişken?