我有一个文件
# my file
# is here
section1 {
foo
nothing important
}
section2 {
this is important
this is also important
}
我需要用其他内容替换第一部分的内容:
section1 {
bar
really important
}
我已尝试使用sed
正则表达式匹配,但它会捕获第二部分结束括号。我该怎么做?除sed
之外的其他工具也是受欢迎的。
由于
答案 0 :(得分:0)
这是一个快速而又脏的perl文件:
#!/usr/bin/perl
open ( INFILE, 'document.txt' ) || die "Cannot read input file.";
open ( OUTFILE, '>document2.txt' ) || die "Cannot write output file.";
$replaced = "0";
while ( $line_in = <INFILE> ) {
print OUTFILE $line_in;
next unless $line_in =~ /^\s*section1 {\s*$/ && $replaced eq "0";
print OUTFILE " bar\n";
print OUTFILE " really important\n";
while ( $line_in = <INFILE> ) {
next unless $line_in =~ /^\s*}\s*$/;
print OUTFILE $line_in;
$replaced = "1";
last;
}
}
close ( INFILE );
close ( OUTFILE );
它确实保留了原始文件,并为您提供了第二个包含编辑内容的文件,而不是编辑原始文件,但它更像是一个基本原则示例,可帮助您入门。