sed を使用して行の末尾にある括弧を新しい行に置き換える方法は?

sed を使用して行の末尾にある括弧を新しい行に置き換える方法は?

行の末尾にopen {角かっこエラーがあるファイルが多く、条件に応じて新しい行に置き換える必要があります。[a-z)] [{]|[a-z)][{].

入力例:

public class Test {

}

予想出力:

public class Test 
{

}

私のソリューションにはどのような問題がありますか?

sed -e '/[a-z)] [{]|[a-z)][{]/s/{/N{/g' *.java -r 

答え1

Macでこれを行っているので、sed次のことができます。 sed 's/{$/\'$'\n{/'

例:

echo "public class Test {

}" | sed 's/{$/\'$'\n{/'
public class Test 
{

}

ファイルを「所定の位置に」編集するには、次のコマンドを実行します。

sed -i "" 's/{$/\'$'\n{/' java

結果:

cat java 
public class Test 
{

}

ここsedMacで改行を挿入するための参照です。


OS X 10.11.6でテスト済み

答え2

単にこのコマンドを使用できます。

sed -e s/{/\\n{/g *.java

{すべての項目をaに置き換えて、画面\n{に出力を表示します。ファイルのテキストを置き換えるには、内部オプションを使用できます

sed -i s/{/\\n{/g *.java

関連情報