0

我正在尝试使用以下命令替换目录中所有文件的插入:

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 类添加一个默认构造函数。我似乎无法匹配换行符

4

1 回答 1

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
于 2013-05-20T22:26:35.820 回答