如何在java项目中replace下面的模式
catch(SQLException e) { \\TO DO }
同
catch(SQLException e) { SOP(); }
请注意,该文件将有其他模式
catch(IOException e) { // To Do }
这不应该改变。
我试过了
sed 's/catch\(SQLException[^\}]*}/catch(SQLException e)\{SOP();\}/g' file.java
但它不起作用。
你可以使用awk
$ more file catch(SQLException e) { \\TO DO } catch(IOException e) { // To Do } $ awk -vRS="}" '/catch\(SQLException e\)/{$0="catch(SQLException e) { SOP();" }NR{print $0RT} ' file catch(SQLException e) { SOP();} catch(IOException e) { // To Do }
说明:记录分隔符为}
。 然后检查SQLException
。 如果找到,请将记录$0
设置为新记录。 没有复杂的正则表达式需要。
你可以使用这个Perl脚本:
use strict; my $file = ''; $file.=$_ while(<>); $file=~s[catch\s*\(\s*SQLException\s*(\w+)\)\s*\{.*?\}][catch(SQLException $1) { SOP(); }]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) { SOP(); } catch(MyOwnException e){ // MORE THINGS } finally{