sed模式替换为新行

时间:2013-05-20 22:09:37

标签: sed

我正在尝试使用以下命令替换目录中所有文件中的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类添加一个默认构造函数。我似乎无法匹配换行符

1 个答案:

答案 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