如何在java项目中替换以下模式
catch(SQLException e) {
\\TO DO
}
带
catch(SQLException e) { S.O.P(); }
请注意,该文件将包含其他模式,如
catch(IOException e) {
// To Do }
不应该改变。
我试过
sed 's/catch\(SQLException[^\}]*}/catch(SQLException e)\{S.O.P();\}/g' file.java
但它不起作用。
答案 0 :(得分:1)
你可以使用awk
$ more file
catch(SQLException e) {
\\TO DO
}
catch(IOException e) {
// To Do }
$ awk -vRS="}" '/catch\(SQLException e\)/{$0="catch(SQLException e) { S.O.P();" }NR{print $0RT} ' file
catch(SQLException e) { S.O.P();}
catch(IOException e) {
// To Do }
说明:将记录分隔符设为}
。然后检查SQLException
。如果找到,请将记录$0
设置为新记录。不需要复杂的正则表达式。
答案 1 :(得分:0)
您可以使用此Perl脚本:
use strict;
my $file = '';
$file.=$_ while(<>);
$file=~s[catch\s*\(\s*SQLException\s*(\w+)\)\s*\{.*?\}][catch(SQLException $1) { S.O.P(); }]sg;
print $file."\n";
示例运行:
输入文件:
try { int a = 0/0; }
catch(SQLException e) {
\\TO DO
}
catch(MyOwnException e){
// MORE THINGS
}
finally{
结果:
try { int a = 0/0; }
catch(SQLException e) { S.O.P(); }
catch(MyOwnException e){
// MORE THINGS
}
finally{