我正在尝试使用以下命令替换目录中所有文件中的insert:
find . -type f -exec sed -i.bak ':begin;$!N;s/\(@Autowired\)\n\(public .*\)\((ServletRequest\)/\2() \{\}\n&/;tbegin' {} \;
这是我正在尝试做的事情:
匹配度:
@Autowired
public something(ServletRequest
替换为:
public something() {}
@Autowired
public something(ServletRequest
我基本上是在为某个目录/包中的所有java类添加一个默认构造函数。我似乎无法匹配换行符
答案 0 :(得分:0)
这似乎有效:
sed '/@Autowired/{:l
N;s/\(.*public[ ]*\)\([^(]*\)\((ServletRequest\)/public \2() {}\n\1\3/;
/ServletRequest/!bl}' input
如果你的ServletRequest位总是跟在@autowired:
之后sed '/@Autowired/{
N;s/\(.*public[ ]*\)\([^(]*\)\((ServletRequest\)/public \2() { }\n\1\3/}'
input