ฉันพบว่ากระทู้นี้มีประโยชน์ - ฉันจึงคิดว่าจะเพิ่มคำตอบให้กับปัญหาของตัวเอง
ฉันต้องการแก้ไขไฟล์คอนฟิกูเรชันฐานข้อมูล (datastax cassandra) จากแอปพลิเคชันโหนดในจาวาสคริปต์และสำหรับการตั้งค่าอย่างใดอย่างหนึ่งในไฟล์ฉันต้องการจับคู่กับสตริงแล้วแทนที่บรรทัดที่ตามมา
นี่คือทางออกของฉัน
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 );
หลังจากรันมันจะเปลี่ยนการตั้งค่าไดเร็กทอรีข้อมูลที่มีอยู่เป็นไดเร็กทอรีใหม่:
config ไฟล์ก่อน:
data_file_directories:
- /var/lib/cassandra/data
ไฟล์ config หลังจาก:
data_file_directories:
- /mnt/cassandra/data
value
ตัวแปร?