考虑你有一个带有以下行的文件test.cpp
Test(func_class,func1)
{
Test_Func1();
Test_Func2();
Test_Func3();
}
Test(func_class,func3)
{
Test_Func1();
Test_Func9();
Test_Func3();
}
Test(func_class,func2)
{
Test_Func6();
Test_Func7();
Test_Func3();
}
现在我想在花括号之间插入一个新行:e:g in Test(func_class,func1 / 2/3) 插入后会像
Test(func_class,func1)
{
Test_Func1();
Test_newFunc6();
Test_Func2();
Test_Func3();
}
Test(func_class,func3)
{
Test_Func1();
Test_newFunc6();
Test_Func9();
Test_Func3();
}
Test(func_class,func2)
{
Test_Func6();
Test_newFunc6();
Test_Func7();
Test_Func3();
}
这可以使用脚本来完成。任何人都可以建议shell脚本或perl python来做到这一点,
答案 0 :(得分:0)
以下可能有所帮助。这是python
代码:
cpp = open("test.cpp","r")
lines = cpp.readlines()
printExtraAfterOneLine = False
for line in lines:
if printExtraAfterOneLine:
print line
print ' Test_newFunc6();'
printExtraAfterOneLine = False
else:
if line.strip() == "{":
printExtraAfterOneLine = True
print line
答案 1 :(得分:0)
其中gash.txt
是输入文件,out.txt
是输出文件:
蟒:
extra = ' Test_newFunc6();\n'
fh = open('gash.txt')
out = open('out.txt','w')
for line in fh:
out.write(line)
if line.startswith('{'):
# Read the next line
buff = fh.readline()
out.write(buff)
out.write(extra)
fh.close()
out.close()
perl的:
use warnings;
use strict;
my $extra = " Test_newFunc6();\n";
open(my $fh, '<', 'gash.txt') || die "gash.txt: $!";
open(my $out, '>', 'out.txt') || die "out.txt: $!";
while (<$fh>) {
print $out $_;
if (substr($_, 0, 1) eq '{') {
# Read the next line
my $buff = <$fh>;
print $out $buff;
print $out $extra;
}
}
close($fh);
close($out);
击:
extra=" Test_newFunc6();\n";
wFlag=false
exec 3> out.txt
IFS=
while read -r line
do
echo "$line" >&3
$wFlag && echo "$extra" >&3
if [[ ${line:0:1} == '{' ]]
then
wFlag=true
else
wFlag=false
fi
done < gash.txt
exec 3<&-