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 に答える